2011-09-08 77 views
6

我有一個JSON對象和一個<form>。如果JSON對象有一個名稱與表格<input>的名稱匹配的屬性,我希望輸入用於dsiplay此屬性的值。有沒有簡單的方法來做到這一點與JQuery?將JSON屬性綁定到表單

var json = {foo: 'foo', bar: 'bar}; 
def form = $('#myform'); 

// something magical that assigns JSON property values to form inputs with matching names 

有問題的形式看起來類似:

<form id = "#myform" action="/foo/bar/"> 
    <input name="foo"/> 
    <input name="bar"/> 
</form> 
+0

請問這個問題,你需要什麼? http://stackoverflow.com/questions/635565/walk-json-response-and-populate-form-fields-more-efficient-approach – ipr101

+0

http://stackoverflow.com/questions/5096816/jquery-templates-plugin-如何創建雙向綁定不是你想要的嗎? –

回答

10

您可以運行一個循環,將搜索elment,並把該值:使用點域,而不是輸入是

<form id="myform"> 
    <input type="text" name="foo" /> 
    <input type="text" name="other" /> 
</form> 

 $.each(json,function(key,value) { 
      form.find("input[name='"+key+"']").val(value); 
     }); 

和形式使用textarea並選擇

+0

在我的情況下,我想匹配的JSON屬性對輸入**名稱** –

+0

你可以添加你的形式的HTML代碼? –

+0

我已將它添加到 –

0

試試這個:

var json = {foo: 'foo1', bar: 'bar1'}; 

for(var key in json) { 
    if($('#myform input[name="'+key+'"]').length > 0){ 
     $('#myform input[name="'+key+'"]').attr('value',json[key]); 
    } 
} 

我認爲這是這就是你想要的東西;)

見這裏的例子:http://jsfiddle.net/expertCode/FgwHe/

0

我會使用jQuery的數據鏈接插件http://api.jquery.com/link/

+0

的深處工作一個級別,如果你希望表單自動更新的話。 –

+1

看起來數據鏈接插件轉移到[https://github.com/jquery/jquery-datalink](https://github.com/jquery/jquery-datalink)。 –

1

你的意思是這樣的:

var json = {foo: 'foo', bar: 'bar}; 
def form = $('#myform'); 

for(var prop in json){ 
    $("#myform input[name="+prop+"]")[0].value = json[prop]; 
}