Я думаю, что нашел более простое решение для вас.Имейте в виду, что из-за проблем, о которых я упоминал в своих комментариях, мне пришлось резко упростить ваш код 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
на что-то вроде opt_vaQDzJU37ArScs818rc8HUwz9gm1wypP
, поэтому мне пришлось вместо этого использовать значение.Для этого есть обходные пути, если вы намерены использовать идентификатор вместо значения.
Чтобы проиллюстрировать мою точку зрения, измените цикл для каждой опции следующим образом:
$('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());
});
Youувидим, как будут работать атрибуты после запуска fcbkcomplete
.
Окончательное редактирование
После настройки на localhost и использования TXT-файла JSON я смогнаконец повторить проблему, которую вы имели.Дело в том, что поведение полностью меняется, когда вы используете 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
});
});