我想在选定的多个输入的文本字段中添加用户输入的文本作为选项,并自动选择它,当选项不存在时,如果选项存在,则所有这些都是,然后我想选择它。到目前为止,我已设法做到这一点:
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;
};
每当用户按下enter键时我都会调用此函数,而输入字段在keydown_check
函数中处于焦点。
我有两个问题:
例如:如果我有选项&#34; foo&#34;,并开始输入&#34; fo&#34;,则选择将标记第一个 选项作为候选人(&#34; foo&#34;),所以如果我按回车键,应该选择它,但相反,会发生的事情是&#34; fo&#34;作为一个选项添加并选择,当我真的想选择&#34; foo&#34;。
如果我选择&#34; foo&#34;点击一下,一切正常。选择选项标记,子字符串文本作为选项的一部分。
如何在不丢失所有原始功能的情况下为所选内容添加不存在的选项?
如何在所选插件中选择我选择的多个字段?正如您在上面的代码中看到的那样,select multiple字段的id是硬编码的。我想这样做是为了能够在用户添加新选项时刷新选择。
我正在寻找的功能与linkedin
提前致谢!
答案 0 :(得分:1)
您应该尝试基于所选插件的select2插件,但它可以动态添加元素。
下面是链接:http://ivaynberg.github.com/select2/
查看自动标记化的示例我认为这可能是您正在寻找的。 p>
答案 1 :(得分:1)
我今天需要这个,所以我写了这样的东西:
$(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”是一个plugin,它以异步方式发送表单数据并以JSON格式返回服务器的响应。在控制器中我检查标签是否存在,否则我创建它。作为回应我五个“jsoned”标签对象。
答案 2 :(得分:0)
只需将其命名为keyup_check 在按下的字母初始化之前调用keydown_check 与keyup_check不同
答案 3 :(得分:0)
我创建了一个jquery选择的jqufiddle,它接受文本并创建为选项。在早期版本的jquery中,选择了facility facility create。
create_option: true;
persistent_create_option: true;
skip_no_results: true;
您可以使用此代码:
$('#id_select').chosen({
width: '100%',
create_option: true,
persistent_create_option: true,
skip_no_results: true
});
jsfiddle链接:https://jsfiddle.net/n4nrqtek/
答案 4 :(得分:-1)
我找到了一个多选的解决方案
var str_array = ['css','html'];
$("#id_select").val(str_array).trigger("chosen:updated");