我从我的数据库中获取一个JSON对象,如下所示:
products = [
{"ID":1, "CODE":"code1", "DESCRIPTION":"abcd", "PRICE":100},
{"ID":2, "CODE":"code2", "DESCRIPTION":"efgh", "PRICE":100},
{"ID":3, "CODE":"code3", "DESCRIPTION":"ijkl", "PRICE":100}
];
然后我有一个select元素,其中包含text = CODE和value = ID的选项。 现在,当用户在下拉列表中选择产品时,我想填写一些带有所选产品的DESCRIPTION和PRICE的文本框。是否有任何内置函数可以执行以下操作:
var myObject = products("ID" = selectedValue)
我想用
myObject.DESCRIPTION, myObject.PRICE
填写我的文本框。谢谢
答案 0 :(得分:0)
您可以使用$.each
效用函数:
$('select').change(function(){
var id = this.value;
$.each(products, function(i, myObject){
if (myObject.ID === id) {
$('textarea').val(myObject.DESCRIPTION);
return false;
}
})
})
答案 1 :(得分:0)
现代javascript引擎(IE9及更高版本,node.js和标准兼容的浏览器)也支持数组的功能列表方法:map
,reduce
和filter
。
这是filter
的经典案例:
var myObject = products.filter(function(x){return x.ID == selectedValue})[0];
对于较老的borwsers,你可以实现这个垫片:
if (!Array.prototype.filter) {
Array.prototype.filter = function(callback, myself) {
if (!myself) myself = this;
var result = [];
for (var i=0;i<myself.length;i++) {
if (callback(myself[i],i,myself)) result.push(myself[i]);
}
return result;
}
}