-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

删除选择器选项属性选择器之间的空格,您还应该用引号将值括起来,否则您将得到像1.24.

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

http://jsfiddle.net/3DLbA/

于 2012-10-12T23:01:28.147 回答
0

检查小提琴

我在代码中看到两个错误..一个是删除之间的空格

option[value
      ^
    No space here

接下来是为您的价值添加报价..

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

将您的值用单引号括起来

You dont have a value of 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 回答