-1

JSON を使用して、選択メニューを含むフォームを事前入力しようとしています。キーを選択メニューの #id タグとして使用していますが、動作させることができないようです。別のセレクターを試してみましたが、まだ運がありません。

ここに私のコードがあります

 $(document).ready(function () {

     var p = {
         "weight":"39",
         "height":"1.24",
         "age":"34"
     };

     for (var key in p) {
         if (p.hasOwnProperty(key)) {

             if ($("#" + key + " option [value=" + p[key] + "]").length) {
                 $("#" + key + " option [value=" + p[key] + "]").attr('selected', 'selected');
             }

         }
     }
 });

 <select id="age">
 <option value="33">33</option>
 <option value="34">34</option>
 </select>

 <select id="height">
 <option value="1.25">1.25</option>
 <option value="1.24">1.24</option>
 </select>

 <select id="weight">
 <option value="38">38</option>
 <option value="39">39</option>
 </select>
4

3 に答える 3

2

"option" と "[value=..." の間のスペースを削除します - スペースは "この要素の子" を意味します。

$('option [value="123"]')マッチ(例)<option><label value="123">...

$('option[value="123"]')マッチ<option value="123">

于 2012-10-12T23:00:50.253 に答える
1

selectorsオプション属性 selectorの間のスペースを削除します。また、値を引用符で囲む必要があります。そうしないと、 のような文字列の構文エラーが発生します1.24

$("#"+key+ " option[value='"+p[key]+"']").prop('selected', true);

http://jsfiddle.net/3DLbA/

于 2012-10-12T23:01:28.147 に答える
0

フィドルをチェック

コードに 2 つのエラーが表示されます。1 つは、間のスペースを削除することです。

option[value
      ^
    No space here

次は、値に引用符を追加します..

 if ($("#" + key + " option[value='" + p[key] + "']").length) {
      $("#" + key + " option[value='" + p[key] + "']").attr('selected', 'selected');

値を一重引用符で囲みます

あなたはの値を持っていません option[value=1.24]

       It should be `option[value='1.24']`
                                  ^    ^
                                 Missing Quotes here

http://jsfiddle.net/sushanth009/ZrTZA/8/

于 2012-10-12T23:08:02.923 に答える