• 締切済み

jQueryでセレクトボックスの制御

自身のウェブサイト上のhtmlファイル内に複数選択型のセレクトボックスを、<select multiple="multiple">以下に<option value="XXX">を通し番号をつけて並列することで実装したとします。 jQueryにて例えば var a= [001, 003, 042]; といったように配列aを定義したときこの配列の中の要素(3桁の数字)に対応するようなvalueをもつoption(選択肢)をselectedに書き換えたいのですが初学者のためどうもさっぱりうまく行きません。 1.配列aをoptionタグのvalueの値であるとjQuery側に認識させる方法 2.jQueryによって配列に対応するvalueを持つoptionをselectedに書き換える方法 以上の2点について教えていただきたく思います。(説明が下手で申し訳ないです。) 配列を使わなくてももっと簡単な方法があるのかもしれませんが、諸事情によりなんとか配列を用いて実装できたらと思います。よろしくお願いします。

みんなの回答

  • sanzero
  • ベストアンサー率56% (58/102)
回答No.2

0から始まる連番ならば $.each(a, function(index, value){ $('select > option').eq(1 * value).prop('selected', true); }); 配列の中身の数値番目のoptionをセレクトするという処理を書きます。 別に連番でない場合は $('select > option').each(function(){ if ($.inArray($(this).val(), a) > -1) { $(this).prop('selected', true); } }); eachでoptionをなめます。 inArrayを使って比較します。 もしあればセレクトします。 ※三桁の数字は文字列として扱わないといけないので配列の中身はそれぞれクォーテーションで囲ってください。 検証してませんがこんな感じでどうでしょう。

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

日本語がところどころよくわからないところがありますが…。 >1.配列aをoptionタグのvalueの値であるとjQuery側に認識させる方法 >2.jQueryによって配列に対応するvalueを持つoptionをselectedに書き換える方法 とりあえず質問への回答として、あなたがやりたいことを実現するには $("【セレクタ】").val(a); と書けばいいだけです。 ※「【セレクタ】」の部分はあなたのソース内容に応じて書き換えてください。 ただ、その前に var a= [001, 003, 042]; この配列がおかしいです。以下に書き換えてください。 var a= ["001", "003", "042"]; プログラミングがはじめてとのことのようですから仕方がないかもしれませんが、型を正しく記述することはとても大切なことなので、jQueryに手をつける前にJavaScriptの基礎をもう少し勉強したほうがいいですよ。 クォーテーションなしで書いたら数値になりますし、001とか042と書いてしまうと8進数の意味になります。 ですので var a= [001, 003, 042]; は var a= [1, 3, 34]; という値であることになります。