我根据从php脚本中获取的json数据填充选择输入字段的选项。
这很好用,但我想根据所选的选项显示一些额外的信息。 基本上,我正在寻找一种方法来找到所选选项的关键:
$("#code").html(result[whichkey]["uniquecode"]);
This fiddle希望让我的问题更加清晰。
非常感谢任何帮助!
答案 0 :(得分:2)
鉴于option
元素是以对象的uniquecode
作为其值创建的,为什么你甚至需要再次访问该对象?您只需检索所选value
的某个option
属性?
假设这只是因为你过分简化了你的例子,并且数组中的对象确实包含了option
元素本身没有的其他有用数据,那么你可以使用$.grep
来按选定的uniquecode
过滤对象数组,如下所示:
var json = '[{"uniquecode":"b32dez2","name":"John Doe","foo":"bar"},{"uniquecode":"a2df32","name":"Adam Smith","foo":"buzz"}]';
var result = JSON.parse(json);
var $sel = $('#names').change(function() {
var value = this.value;
var obj = $.grep(result, function(e) {
return e.uniquecode == value;
});
$("#code").html(obj[0].uniquecode + ' / ' + obj[0].foo)
});;
result.forEach(function(obj) {
$('<option value="' + obj.uniquecode + '">' + obj.name + '</option>').appendTo($sel)
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="names"></select>
<div id="code"></div>
请注意,我向对象添加了foo
属性,以向您展示如何访问直接放在option
元素上的对象的属性。
另请注意,我也简化了生成option
元素的代码。如果您要在项目中使用jQuery一次,那么您也可以在任何地方使用它。