私はあなたのためのより簡単な解決策を見つけたと思います。コメントで述べた問題のために、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
。
最終編集
ローカルホストで設定し、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
});
});