使用JQUERY/JSON自动填充选择下拉框
好的,我花了很多时间查看示例,但找不到一个对我的情况有足够帮助的示例。我有一个JSON文件,在本例中简化为:使用JQUERY/JSON自动填充选择下拉框,jquery,ajax,json,Jquery,Ajax,Json,好的,我花了很多时间查看示例,但找不到一个对我的情况有足够帮助的示例。我有一个JSON文件,在本例中简化为: { "Company":[ { "Position": "Manager", "Name": { "11": "joe", "12": "bill", "166": "John"
{
"Company":[
{
"Position": "Manager",
"Name": {
"11": "joe",
"12": "bill",
"166": "John"
}
},
{
"Position": "Tech",
"Name": {
"11": "Bob",
"12": "Cindy",
"166": "Karl"
}
},
{
"Position": "Sales",
"Name": {
"11": "Sam",
"12": "Ron",
"166": "Sara"
}
}
]}
我正在尝试创建两个选择框。当用户选择第一个位置框时,它将用属性名称自动填充第二个位置框。以下是我到目前为止的情况:
<select id="job"></select>
<select id="name"></select>
以及守则:
$select = $('#job');
$select2 = $('#name');
$.ajax({
url: 'factors.json',
dataType: 'JSON',
success: function(data) {
$select.html('');
$.each(data.Company, function(key, val) {
$select.append('<option id="' + key + '">' + val.Position + '</option>');
$("#job").change(function() {
$.each(val.Name, function(key2, val2) {
$select2.append('<option id="' + key2 + '">' + val2 + '</option>');
})
})
})
},
});
此代码将在第二个框中自动填充每个位置的所有名称。我似乎不知道如何用每个唯一对象的名称填充它。谢谢你的帮助 这应该能奏效
$.each(data.Company, function(key, val) {
$select.append('<option id="' + key + '">' + val.Position + '</option>');
});
$("#job").change(function(e) {
$select2.empty();
$index = $(this).children(':selected').attr('id');
for (var k in data.Company[$index].Name) {
$select2.append('<option id="' + k + '">' + data.Company[$index].Name[k] + '</option>');
}
});
试试这样的。你的选项应该有一个value属性。我在选项中添加了一个数据id attr,以便使用它存储位置索引
$.each(data.Company, function(i, v) {
// create option with value as index - makes it easier to access on change
var options = $('<option/>', {value: v.Position, text: v.Position}).attr('data-id',i);
// append the options to job selectbox
$('#job').append(options);
});
// bind change event
$('#job').change(function() {
// cache this
var $el = $(this);
// get data-id attr from selected option
var id = $('option:selected',this).data('id');
// empty select
$('#name').empty();
// get name values for selected option
$.each(data.Company[id].Name, function(i, v) {
// create option elements
var options = $('<option/>', {value: v, text: v});
// append the options to name selectbox
$('#name').append(options);
});
}).change();// trigger change() on page load to fill name selectbox
你的JSON是无效的,因为很抱歉,我在为这篇文章瘦身时错过了结束括号。现在应该可以了还是无效的,你刚才也注意到了。。我想我明白了!谢谢你-这有助于我理解如何以不同的方式获得它!啊-非常感谢!完美