请通过以下小提琴。我正在尝试在fcbkcomplete
框中获取所选产品的ID,并在文本框中将其显示为逗号分隔值id="interest"
。我写了一个函数来实现它,但它没有用。该函数添加第一个值的id,而不是取多个选择框中添加的其他值的id。
http://jsfiddle.net/balac/xDtrZ/1/
我添加了json.txt
。它包含这样的数据
[{"key":"2", "value":"Canon Powershot "},{"key":"3", "value":"Fastrack Bag"},{"key":"4", "value":"Iphone 4 "},{"key":"5", "value":"Levis Jeans"},{"key":"7", "value":"Indig"},{"key":"8", "value":"Dashing Cars"},{"key":"9", "value":"dsdas"},{"key":"10", "value":"fsfs"}]
在上面的json值中,key是我想在文本框中以逗号分隔值显示的id。 value是选择下拉列表中的值。
在下拉列表中选择值时,我希望相应的键以逗号分隔值的形式添加到文本框中。
问题是,只有第一个选定项目的键才会被添加到文本框中,无论如何。
希望具体并详细说明。如果有人想要澄清,请问我,我会解释更多。
答案 0 :(得分:3)
我想我找到了一个更简单的解决方案。请记住,由于我在评论中提到的问题,我必须大幅简化您的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而不是值,那么有一些解决方法。
为了说明我的观点,请修改每个选项的循环,如下所示:
$('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
运行后属性如何结束。
最终修改
在localhost上设置并使用JSON txt文件后,我终于能够复制您遇到的问题。问题是,当您使用JSON而不是硬编码<option>
时,行为会完全改变。这是您的工作解决方案:
$(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
});
});
答案 1 :(得分:0)
以下链接是在select中获取fcbkcomplete值的示例。您可以为id执行相同的过程。 https://github.com/emposha/FCBKcomplete/issues/110 示例如何使用:
`//auto complete jquery starts here $("#box").fcbkcomplete({ width: 250, addontab: true, maxitems: 1, input_min_size: 0, height: 10, cache: true, filter_case: true, filter_hide: true, filter_selected: true, newel: true, filter_case:false, onselect: function(item) { getting_value_dealer(item._value, item._id); } }); //auto complete jquery ends here `