0

ドロップダウンリストとして2つの入力ボックスがあります。2番目の入力ボックス用に作成されるドロップダウンリストは、最初の入力フィールドに指定された値によって異なります。

var firstarray =[{sym: "1", desc: "one"},
                 {sym: "2", desc: "two"},
                 {sym: "3", desc: "three"}];

var secondarray =[{sym: "4", desc: "four", firstarraycode: "2"},
                  {sym: "5", desc: "five", firstarraycode: "2"},
                  {sym: "6", desc: "six",  firstarraycode: "1"}];

最初の配列を使用して、最初の入力ボックスのドロップダウンを作成しました。

sym最初の配列の値はfirstarraycode、2番目の入力ボックスの3番目のフィールド()です。

最初の配列選択の値に応じてsym、2番目の入力ボックスのドロップダウン値を配列からフィルタリングする必要があります。

たとえば、最初のドロップダウンリストで選択すると、値と。2を含む2番目のドロップダウンリストが作成されます。sym45

4

2 に答える 2

1

試してください:http://jsfiddle.net/aF6Xq/

var firstarray =[{sym:"1",desc:"one"},{sym:"2",desc:"two"},{sym:"3",desc:"three"}];
var secondarray =[{sym:"4",desc:"four",firstarraycode:"2"},{sym:"5",desc:"five",firstarraycode:"2"},{sym:"6",desc:"six",firstarraycode:"1"}];

function fillsecond(array){
   $('#second').empty();
   $('#second').append("<option>Select</option>");
   for (i=0;i<array.length;i++){             
     $('<option/>').val(array[i].sym).html(array[i].desc).appendTo('#second');
   }
} 
 $('#first').append("<option>Select</option>");
 $('#second').append("<option>Select</option>");

for (i=0;i<firstarray.length;i++){
   $('<option/>').val(firstarray[i].sym).html(firstarray[i].desc).appendTo('#first');
}
$('#first').change(function(){
  var val=$(this).val();

  var tempArray = $.grep( secondarray, function(elem){ return elem.firstarraycode  == val; });

  fillsecond(tempArray);
});
于 2013-02-15T12:24:40.427 に答える
0

$.map同様に、またはデータをフィルタリングするために使用できる jQuery ユーティリティがいくつかあり$.grepます。

$('#select_one_ID').change(function(){
  var val=$(this).val();
  var optionsArray=$.grep( secondarray, function(item){ return item.firstarraycode  == val; });

  /* loop over optionsArray to create new option tags*/

});

API リファレンス: http://api.jquery.com/jQuery.grep/

于 2013-02-15T12:07:50.963 に答える