gpt4 book ai didi

json - JSON 中的链式州城市下拉列表

转载 作者:行者123 更新时间:2023-12-01 08:24:31 24 4
gpt4 key购买 nike

我正在尝试填充链接的州城市选择下拉列表。我使用外部 json 文件来执行此操作,其中包含州及其相应的城市名称、id 和 pincode。有人可以给出一些关于如何实现这一目标的想法吗?我需要根据州选择填充城市和 pincode 值。提前致谢...

JSON

{
"Alaska" : [
{"id": "1", "name": "Adak", "pincode": "xxx1"},
{"id": "2", "name": "Akhiok", "pincode": "xxx2" },
{"id": "3", "name": "Akiak", "pincode": "xxx3" },
],

"Arizona" : [
{"id": "4", "name": "Apache Junction", "pincode": "xxx4"},
{"id": "5", "name": "Avondale", "pincode": "xxx5"},
{"id": "6", "name": "Benson", "pincode": "xxx6"},
],

"Alabama" : [
{"id" : "5", "name": "Abbeville", "pincode": "xxx7" },
{"id" : "7", "name": "Adamsville", "pincode": "xxx8" },
{"id" : "8", "name": "Akron", "pincode": "xxx9" },
]
}

最终渲染的 html

<select id="state">
<option value="1">Alaska</option>
<option value="2">Arizona</option>
<option value="3">Alabama</option>
</select>

<select id="city">
<option value="4">Adak</option>
<option value="5">Akhiok</option>
<option value="6">Akiak</option>
</select>

<input id="pincode" type="text" />

最佳答案

我发现你的问题很有趣,并写了相应的解决方案,你可以实时看到here .

这是代码:

jQuery(document).ready(function () {
var myData;
var onCityChange = function (e) {
var cityData = $("option:selected", e.target).data('pincode');
$("#pincode").val(cityData.pincode);
};
var onStateChange = function (e) {
var state = $("option:selected", e.target).text();
if (state && myData) {
var stateData = myData[state];
if (stateData && stateData.length > 0) {
$("#city").empty();
$("#city").unbind('change');
for (var i = 0; i < stateData.length; i++) {
var cityData = stateData[i];
var option = $('<option value="' + cityData.id + '">' + cityData.name + '</option>')
.data('pincode', cityData);
$("#city").append(option);
}
$("#city").bind('change', onCityChange)
.trigger('change');
}
}
};
$.ajax({
url: 'DependendSelectsFromJson.json',
dataType: 'json',
success: function (data) {
var stateOptions = "", stateId = 1;
for (var prop in data) {
if (data.hasOwnProperty(prop)) {
stateOptions += '<option value="' + stateId + '">' + prop + '</option>';
stateId++;
}
}
myData = data;
$("#state").html(stateOptions)
.bind('change', onStateChange)
.trigger('change');
}
});
});

访问我使用的第二个(城市)选择框的pincode jQuery.data如果需要将一些附加信息与 DOM 元素关联起来,我发现该函数非常实用。人们只能以这种方式保存 pincode 值,但我使用该函数来保存有关城市的完整信息。

已更新:我忘了提及您发布的 JSON 数据有错误。您应该删除“]”之前的逗号。可能这只是将数据剪切并粘贴到问题文本的问题。

关于json - JSON 中的链式州城市下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com