2012-11-09 125 views
1

我得到從我的數據庫中的JSON對象,看起來像這樣檢索對象:從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} 
]; 

然後,我必須有對每個產品的文本= CODE和值= ID選項中選擇元素。 現在,當用戶在下拉列表中選擇產品時,我想用選定產品的DESCRIPTION和PRICE填充一些文本框。有沒有內置功能可以做這樣的事情:

var myObject = products("ID" = selectedValue) 

我想使用

myObject.DESCRIPTION, myObject.PRICE 

給我補文本框。謝謝

回答

0

可以使用$.each效用函數:

$('select').change(function(){ 
    var id = this.value; 
    $.each(products, function(i, myObject){ 
     if (myObject.ID === id) { 
     $('textarea').val(myObject.DESCRIPTION); 
     return false; 
     } 
    }) 
}) 
+0

謝謝你,它工作得很好:) – user1671731

0

現代JavaScript引擎(IE9及以上的Node.js和標準兼容瀏覽器)還支持陣列功能列表的方法:mapreduce,並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; 
    } 
}