2011-09-08 17 views
6

Tengo un objeto JSON y un <form>. Si el objeto JSON tiene una propiedad cuyo nombre coincida con el nombre de un formulario <input>, deseo que la entrada dsiplay el valor de esta propiedad. ¿Hay una manera simple de hacer esto con JQuery?enlazar propiedades JSON a un formulario

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

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

El formulario en cuestión se ve algo como:

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

hace esta pregunta lo que necesita? 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- how-to-create-two-way-binding ¿no es lo que estás buscando? –

Respuesta

10

Puede ejecutar un bucle que buscará la Elment y poner el valor:

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

y para la forma:

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

utilizando .field vez de la entrada es de trabajar con área de texto y seleccione

+0

En mi caso, quiero hacer coincidir la propiedad JSON con la entrada ** name ** –

+0

¿Puedes agregar el código html? –

+0

lo he agregado por encima de –

0

intente esto:

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

creo que es esto lo que quieres;)

Ver ejemplo aquí: http://jsfiddle.net/expertCode/FgwHe/

0

que haría uso de la jQuery Plugin de enlace de datos http://api.jquery.com/link/

+0

si desea que el formulario se actualice automágicamente. –

+1

Parece que el complemento de enlace de datos se movió a [https://github.com/jquery/jquery-datalink](https://github.com/jquery/jquery-datalink). –

1

¿Quieres decir algo como:

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

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