2010-11-16 16 views
85

¿Cómo puedo cargar correctamente un cierto valor en un cuadro de texto usando jquery? Probé el siguiente pero obtengo el [object Object] como salida. Por favor, ilumíname sobre esto, soy nuevo en jquery.cómo establecer el valor del cuadro de texto en jquery

proc = function(x,y) { 
     var str1 = $('#pid').value; 
     var str2 = $('#qtytobuy').value; 
    var str3= $('#subtotal').load('compz.php?prodid=' + x + '&qbuys=' + y); 
    $('#subtotal').val(str3); 
    } 

Y aquí está el formulario HTML:

<form name="yoh" method="get"> 
Product id: <input type="text" name="pid" value=""><br/> 

Quantity to buy:<input type="text" name="qtytobuy" value="" onkeyup="proc(document.yoh.pid.value, this.value);"></br> 

Subtotal:<input type="text" name="subtotal" id="subtotal" value=""></br> 
<div id="compz"></div> 

</form> 
+0

¿Qué es str3? ¿Dónde está declarado? Parece que está intentando cargar un objeto como valor cuando probablemente solo necesite una propiedad de ese objeto: – Fgblanch

+0

lo siento, se olvidó de configurar st3 = $ ('# subtotal'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); –

Respuesta

138

Creo que desea establecer la respuesta de la llamada a la URL 'compz.php?prodid=' + x + '&qbuys=' + y como valor del cuadro de texto ¿verdad? Si es así, usted tiene que hacer algo como:

$.get('compz.php?prodid=' + x + '&qbuys=' + y, function(data) { 
    $('#subtotal').val(data); 
}); 

Referencia: get()

Tiene dos errores en su código:

  • load() pone el HTML volvió del Ajax en el elemento especificado:

    L datos del servidor y coloque el HTML devuelto en el elemento coincidente.

    No puede establecer el valor de un cuadro de texto con ese método.

  • $(selector).load() devuelve el objeto jQuery . Por defecto, un objeto se convierte a [object Object] cuando se trata como una cadena.

cualquier aclaración:

Supongamos que la URL vuelve 5.

Si el código HTML siguiente aspecto:

<div id="foo"></div> 

entonces el resultado de

$('#foo').load('/your/url'); 

será

<div id="foo">5</div> 

Pero en su código, que tienen un elemento de entrada. Teóricamente (que no es HTML válido y no funciona como notado), una llamada equivalente resultaría en

<input id="foo">5</input> 

Pero en realidad se necesita

<input id="foo" value="5" /> 

Por lo tanto, no se puede utilizar load(). Tienes que usar otro método, obtener la respuesta y establecerlo como valor tú mismo.

+0

¿Realmente se vuelve más difícil si solo quiero cambiar dónde se está cargando el resultado? Mi código anterior es funcional cuando lo cargo en un div. –

+1

@ Ieyasu Sawada: Bueno, actualmente estás pasando un objeto de JavaScript a '$ ('# subtotal'). Val (str3);' porque 'load()' no funciona como creías que funcionaba. Sí, puede usar 'load()' para cargar texto o HTML en un 'div' pero no como un valor de cuadro de texto. –

+0

gracias por iluminarme –

52

valor es javascript para usar el lenguaje de jQuery se debe utilizar

$('#pid').val() 

de conseguir y

$('#pid').val('value') 

para configurarlo .

http://api.jquery.com/val/

su segunda edición.

Nunca probé el conjunto automático del valor html del método de carga, lo siento. Por supuesto, usted puede hacer algo como

$('#subtotal').load('compz.php?prodid=' + x + '&qbuys=' + y, function(response){ $('#subtotal').val(response); 
}); 

prueba que causa estoy escribir a mano codificantes;)

http://api.jquery.com/load/

+2

Vale la pena señalar la página [jQuery api] relevante (http://api.jquery.com/) para ['val()'] (http://api.jquery.com/val/), para fines de referencia . –

+1

Incluso si es demasiado básico como para señalarlo, ¿tal vez? Solo mi humilde opinión ... ¡De todos modos actualizado! – Mauro

+0

compz.php calcula el producto de los 2 números en la entrada. Supongo que la parte que carga los valores calculados: $ ('# subtotal'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); está siendo tratado como objeto, es por eso que veo el objeto objeto como salida, ¿cómo puedo convertirlo a un valor normal? –

5

Me gustaría resaltarle que .val() también funciona con selecciones para seleccionar el valor seleccionado actual.

Cuestiones relacionadas