动态添加选项,选择选择多个jQuery插件(Dynamically add option to ch

2019-07-30 17:28发布

我想添加文本,在所选择的选择多输入作为一个选项的文本字段用户输入,并自动选择它,这一切的时候可以选择不存在,如果该选项存在,那么我想选择它。 到目前为止,我已经能做到这一点:

Chosen.prototype.add_text_as_option = function () {
    $('#id_select').append(
        $('<option>')
                .html(this.search_field.val())
                .attr('selected', 'selected')
                .attr('value', 0)
    );
    $('#id_select').trigger("liszt:updated");
    return false;
};

我把这个功能只要用户按下回车键,输入字段是内对焦keydown_check功能。

我有两个问题:

  • 当务之急,当用户按下输入,并键入一个选项的子字符串,则该选项未被选中,但子文本将被添加和选择。 不是我想要的。

例如:如果我可以选择“富”,并开始键入“FO”,选择将迎来第一个选项作为候补(“富”),所以如果我按下回车键,应选择,而是会发生什么是认为“FO”被添加作为一个选项,并选中,当我真正想选择“富”。

如果我选择“富”了一下,然后一切工作正常。 选项选择标记被选择并且子文本被作为选项的一部分。

我怎样才能添加到选择一个不存在的选项,没有失去所有的原始功能?

  • 我怎样才能访问中选择多个领域我initilized蒙山所选择的插件内选择? 正如你可以在上面的代码中看到的,选择多个领域的ID是固定的。 我想这样做是为了能够刷新选择当用户添加一个新的选择。

  • 我正在寻找的功能是非常相似的技能部件LinkedIn

提前致谢!

Answer 1:

你应该尝试这是基于关闭选择插件的选择2插件,但它动态地添加元素效果很好。

继承人的链接: http://ivaynberg.github.com/select2/

看看在自动标记化的例子,我认为这可能是你在找什么。



Answer 2:

我需要这个,所以今天我写了这样的事情:

$(function() {
    // form id
    $('#newtag').alajax({
        // data contains json_encoded array, sent from server
        success: function(data) {
            // this is missing in alajax plugin
            data = jQuery.parseJSON(data);
            // create new option for original select
            var opt = document.createElement("OPTION");
            opt.value = data.id;
            opt.text = data.name;
            opt.selected = true;
            // check if the same value already exists
            var el = $('#tags option[value="' + opt.value + '"]');
            if( !el.size() ) {
                // no? append it and update chosen-select field
                $('#tags').append( opt ).trigger("chosen:updated");
            } else {
                // it does? check if it's already selected
                if(!el[0].selected) {
                    // adding already existent element in selection
                    el[0].selected = true;
                    $('#tags').trigger("chosen:updated");
                } else {
                    alert("Already selected and added.");
                }
            }


        }
    })
});

“#” newtag是一种形式,“.alajax”是一个插件 ,在异步方式发送表单数据,并返回服务器的JSON格式的响应。 在控制器我检查,如果一个标签,否则我创造它的存在。 作为回应,我五“jsoned”标签的对象。



Answer 3:

叫它keyup_check keydown_check按下的字母之前被称为不像keyup_check初始化



Answer 4:

I created a jsfiddle of jquery chosen which takes text and create as option. In earlier version of jquery chosen have facility create option.

create_option: true;
persistent_create_option: true;
skip_no_results: true;

You can use this code:

$('#id_select').chosen({
    width: '100%', 
    create_option: true, 
    persistent_create_option: true, 
    skip_no_results: true
});

jsfiddle link: https://jsfiddle.net/n4nrqtek/



Answer 5:

我找到了解决办法多选择

var str_array = ['css','html'];
$("#id_select").val(str_array).trigger("chosen:updated");


文章来源: Dynamically add option to chosen select multiple JQuery plugin