我想我为你找到了一个更简单的解决方案。请记住,由于我在评论中提到的问题,我不得不大幅简化您的fcbkcomplete
代码以使其正常工作..
$(document).ready(function() {
$("#select3").fcbkcomplete({
addontab: true,
maxitems: 10,
input_min_size: 0,
height: 10,
select_all_text: "select",
onselect: clicker
});
});
var clicker = function() {
var selected = new Array();
$('option', this).each(function() {
selected.push($(this).val());
});
$('#interest').val(selected.join(', '));
};
在这里查看它的实际应用。
注意:我必须手动添加<option>'s
到select
列表中才能fcbkcomplete
真正正常工作。但是,无论如何,我的逻辑应该对你有用。
此外,fcbkcomplete
显然动态地将<option>'s
id 更改为类似的东西,opt_vaQDzJU37ArScs818rc8HUwz9gm1wypP
所以我不得不使用该值。如果您死心塌地使用 id 而不是 value,则有一些解决方法。
为了说明我的观点,通过每个选项修改循环,如下所示:
$('option', this).each(function() {
for (var i = 0; i < this.attributes.length; i++) {
var pair = this.attributes[i].name + ': '
+ this.attributes[i].value;
alert(pair);
}
selected.push($(this).val());
});
您将看到属性在fcbkcomplete
运行后如何结束。
最终编辑
在本地主机上设置并使用 JSON txt 文件后,我终于能够复制您遇到的问题。问题是,当您使用 JSON 而不是对<option>
s 进行硬编码时,行为会完全改变。这是您的工作解决方案:
$(document).ready(function() {
var clicker = function(e) {
var selected = new Array();
// using "this" here was out of context, use #select3
$('option', $('#select3')).each(function() {
selected.push(this.value);
});
$('#interest').val(selected.join(', '));
};
$("#select3").fcbkcomplete({
json_url: "parseJSON.txt",
addontab: true,
maxitems: 10,
input_min_size: 0,
height: 10,
select_all_text: "select",
onselect: clicker
});
});