2011-09-08 48 views
6

Tôi có đối tượng JSON và <form>. Nếu đối tượng JSON có thuộc tính có tên khớp với tên của biểu mẫu <input> Tôi muốn đầu vào để dsiplay giá trị của thuộc tính này. Có một cách đơn giản để làm điều này với JQuery?liên kết các thuộc tính JSON với một biểu mẫu

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

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

Các hình thức trong câu hỏi trông giống như sau:

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

Có câu hỏi này làm những gì bạn cần? 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- làm thế nào để tạo ra hai chiều-ràng buộc không phải là những gì bạn đang tìm kiếm? –

Trả lời

10

Bạn có thể chạy một vòng lặp mà sẽ tìm kiếm các elment và đặt giá trị:

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

và cho hình thức:

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

sử dụng .field thay vì đầu vào là làm việc với văn bản và chọn

+0

Trong trường hợp của tôi, tôi muốn khớp thuộc tính JSON với tên ** đầu vào ** –

+0

bạn có thể thêm bạn tạo mã html không? –

+0

Tôi đã thêm nó ở trên –

0

hãy thử điều này:

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]); 
    } 
} 

Tôi nghĩ đó là này những gì bạn muốn;)

Xem ví dụ ở đây: http://jsfiddle.net/expertCode/FgwHe/

1

hoặc là bạn tìm thấy tất cả các đầu vào của bạn và nhận được những cái tên đầu vào và kiểm tra xem chúng trong họ đang có trong một cái gì đó json như: http://jsbin.com/ulelik/edit.

0

tôi muốn sử dụng jQuery Data Link Plugin http://api.jquery.com/link/

+0

nếu bạn muốn biểu mẫu cập nhật tự động. –

+1

Có vẻ như Plugin Liên kết Dữ liệu đã được chuyển đến [https://github.com/jquery/jquery-datalink](https://github.com/jquery/jquery-datalink). –

1

Bạn có nghĩa là một cái gì đó như:

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

for(var prop in json){ 
    $("#myform input[name="+prop+"]")[0].value = json[prop]; 
} 
Các vấn đề liên quan