2012-10-04 30 views
2

假設我有類似如下:映射JSON屬性HTML ID可以輕鬆設定值

var address = {id: 100, name: "Gregg", addressOne: "111 1st Street"}; 

和一個HTML表單:

<input id="name" /> 
<input id="addressOne" /> 

我想知道是否有辦法遍歷表單的所有INPUT元素,並根據JSON對象的屬性設置它們的值。以下是我可以採取的長期方法:

$.each($("input"), function(idx, input) { 
    if (input.attr("id") == "name") input.val(address.name); 
    if (input.attr("id") == "addressOne") input.val(address.addressOne); 
}); 

我想知道是否有辦法做到上述沒有IF語句。 JavaScript中有一些方法可以將兩者動態映射到一起。我希望這是有道理的。

+0

第一行是語法錯誤 –

+2

不應該'address'是'Object'不是'Array'? – clentfort

+0

修好了,對不起。 – Gregg

回答

0
$.each($("input"), function(idx, input) { 
    if (address[input.attr("id")]) { 
     address[input.attr("id")] 
    } 
}); 
1
$("#name").val(address.name); 
$("#addressOne").val(address.addressOne); 
+0

我想過了,但如果在對象地址中添加更多的輸入和值,會發生什麼?這適用於這種特殊情況。 – sgroh

0

你可以試試這個

$('input').each(function(){ 
    $(this).val(address[this.id]); 
}); 

DEMO

0

我認爲這會工作,但我重新定義VAR地址JSON對象。

var address = {id: 100, name: "Gregg", addressOne: "111 1st Street"} 

而且迭代器可能是:

$.each($("input"), function(idx, input) { 
    $(this).val(address[input.id]); 
});​ 

我希望這有助於。

0
<input type="text" id="name" /> 
<input type="text" id="addressOne" /> 

var address = { id: 100, name: "Gregg", addressOne: "111 1st Street" }, 
prop, $field; 

for (prop in address) { 
    $("#" + prop).val(address[prop]); 
} 

請注意,地址變量現在是一個對象文本而不是數組。

小提琴:http://jsfiddle.net/kboucher/Gt9ND/