2012-10-12 68 views
-1

我想要預先填充一個包含選擇菜單的表單,使用JSON,我將該鍵用作選擇菜單的#id標籤的 ,但我似乎無法得到它工作我已經嘗試不同的選擇,但仍然沒有運氣,更改選定的選項選擇菜單.attr

這裏是我的代碼

$(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> 

回答

1

刪除選擇選項屬性選擇之間的空間匹配,你還應該加上引號包住值,否則你將得到語法錯誤的字符串如1.24

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

http://jsfiddle.net/3DLbA/

2

刪除「選項」之間的空間「[值= ...」 - 一個空間說「的孩子這個元素「。

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

$('option[value="123"]')比賽<option value="123">

0

CHECK FIDDLE

我看到了代碼的兩個錯誤..一個是刪除空間

之間
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/