2010-11-16 7 views
85

Comment charger correctement une certaine valeur dans une zone de texte en utilisant jquery? J'ai essayé celui ci-dessous, mais je reçois le [object Object] en sortie. S'il vous plaît, éclairez-moi là-dessus, je suis nouveau à jquery.comment définir la valeur de la zone de texte dans 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); 
    } 

Et voici le formulaire 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

quoi est str3? Où est-il déclaré? Il semble que vous essayez de charger un objet en tant que valeur lorsque vous avez probablement besoin d'une propriété de cet objet. – Fgblanch

+0

Désolé, vous avez oublié de définir st3 = $ ('# subtotal'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); –

Répondre

138

Je pense que vous voulez définir la réponse de l'appel à l'URL 'compz.php?prodid=' + x + '&qbuys=' + y comme valeur de la zone de texte à droite? Si oui, vous devez faire quelque chose comme:

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

Référence: get()

Vous avez deux erreurs dans votre code:

  • load() met le HTML retourné de l'Ajax en l'élément spécifié:

    L Ajoutez les données du serveur et placez le code HTML renvoyé dans l'élément correspondant.

    Vous ne pouvez pas définir la valeur d'une zone de texte avec cette méthode.

  • $(selector).load() Renvoie l'objet de jQuery. Par défaut, un objet est converti en [object Object] lorsqu'il est traité en tant que chaîne.

D'autres précisions:

En supposant que votre URL retourne 5.

Si votre HTML ressemble à:

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

alors le résultat de

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

sera

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

Mais dans votre code, vous avez un élément d'entrée. Théoriquement (il n'est pas valide HTML et ne fonctionne pas comme vous l'avez remarqué), un appel équivalent entraînerait

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

Mais vous avez réellement besoin

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

Par conséquent, vous ne pouvez pas utiliser load(). Vous devez utiliser une autre méthode, obtenir la réponse et la définir comme valeur vous-même.

+0

Est-ce que ça devient vraiment plus difficile si je veux juste changer où le résultat est chargé? Mon code ci-dessus est fonctionnel quand je le charge dans un div. –

+1

@Ieyasu Sawada: Eh bien, vous passez actuellement un objet JavaScript à '$ ('# subtotal'). Val (str3);' car 'load()' ne fonctionne pas comme vous le pensiez. Oui, vous pouvez utiliser 'load()' pour charger du texte ou du HTML dans un 'div' mais pas comme une valeur de zone de texte. –

+0

merci de m'avoir éclairé –

52

valeur est le javascript pour utiliser le langage jQuery vous devez utiliser

$('#pid').val() 

pour obtenir et

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

pour le définir .

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

Votre deuxième question.

Je n'ai jamais essayé l'ensemble automatique de la valeur html de la méthode de chargement, désolé. Bien sûr, vous pouvez faire quelque chose comme

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

Testez parce que je suis handwrite codantes;)

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

+2

Il convient de signaler la page [jQuery api] (http://api.jquery.com/) appropriée pour ['val()'] (http://api.jquery.com/val/), à des fins de référence . –

+1

Même si c'est trop basique pour le signaler, peut-être? Juste mon humble avis ... De toute façon mis à jour! – Mauro

+0

compz.php calcule le produit des 2 nombres dans l'entrée. Je suppose que la partie qui charge les valeurs calculées: $ ('# subtotal'). Load ('compz.php? Prodid =' + x + '& qbuys =' + y); est traité comme un objet, c'est pourquoi je vois l'objet objet comme une sortie, comment puis-je le convertir en une valeur normale –

5

Je voudrais vous signaler que .val() fonctionne également avec des sélections pour sélectionner la valeur sélectionnée en cours.

Questions connexes