1

データベースから次のような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}
];

次に、各製品のtext=CODEおよびvalue=IDを持つオプションを持つselect要素があります。ここで、ユーザーがドロップダウンで製品を選択するときに、選択した製品の説明と価格をいくつかのテキストボックスに入力したいと思います。このようなことをするための組み込み関数はありますか?

var myObject = products("ID" = selectedValue)

使いたい

myObject.DESCRIPTION, myObject.PRICE

私のテキストボックスを埋めるために。ありがとうございました

4

2 に答える 2

0

$.eachユーティリティ機能を使用できます。

$('select').change(function(){
   var id = this.value;
   $.each(products, function(i, myObject){
      if (myObject.ID === id) {
        $('textarea').val(myObject.DESCRIPTION);
        return false;
      }
   })
})
于 2012-11-09T03:12:18.090 に答える
0

最新のJavaScriptエンジン(IE9以降、node.jsおよび標準に準拠したブラウザー)も、配列の機能リストメソッドをサポートしています:map、、reduceおよびfilter

これは、次の典型的なケースですfilter

var myObject = products.filter(function(x){return x.ID == selectedValue})[0];

古い借り手には、このシムを実装できます。

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;
    }
}
于 2012-11-09T04:06:36.830 に答える