json/cities.json
次の形式で私の国の州をその都市に関連付けるJSON ファイル ( ) があります。
{
"State #1": [
"City #1 from State #1",
"City #2 from State #1",
"City #3 from State #1"
],
"State #2": [
"City #1 from State #2",
"City #2 from State #2",
"City #3 from State #2"
]
}
次のように、状態を含む HTML 選択もあります。
<select id="state" name="state">
<option value="State #1"> State #1 </option>
<option value="State #2"> State #2 </option>
</select>
都市の空の HTML 選択:
<select id="city" name="city"></select>
私がやろうとしているのは、キー (州) でフィルタリングされた JSON 値で都市の HTML 選択を埋めることです。
次の jQuery スクリプトを使用しています。
$('#state').on('change', function () {
var state = $(this).val(), city = $('#city');
$.getJSON('json/cities.json', function (result) {
$.each(result, function (i, value) {
if (i === state) {
var obj = city.append($("<option></option>").attr("value", value).text(value));
console.log(obj);
}
});
});
});
console.log
問題は、次のマークアップを返す間、都市を入力する必要がある選択が変更されないことです。
<select name="city" id="city">
<option value="City #1 form State #1, City #2 from State #1, City #3 from State #1">
City #1 from State #1, City #2 from State #1, City #3 from State #1
</option>
</select>
つまり、値は 1 つの値として返されますが、複数の値 (それぞれをカンマで区切ります) である必要があります。