2008-10-30 9 views
2

Une question jQuery facile.Comment référencer une entrée dans un formulaire dans jQuery

J'ai plusieurs formes identiques (sauf leur nom) sur une page avec quelques entrées cachées dans chacune. Je veux me référer à eux en utilisant le nom du formulaire, puis le nom de l'entrée. (Les noms d'entrée ne sont pas uniques dans ma page)

Ainsi, par exemple:

var xAmt = $('#xForm'+num).('#xAmt'); 

Je veux vraiment fournir ces valeurs à un AJAX POST

$.ajax({ 
     url: "X.asp", 
     cache: false, 
     type: "POST", 
     data: "XID=xID&xNumber=xNum&xAmt=xAmt", 

...

Si je peux obtenir les valeurs de l'appel AJAX encore mieux.

+0

Je pense avoir besoin d'un livre JQuery –

+0

Pourquoi dépenser de l'argent pour quelque chose que vous pouvez obtenir gratuitement sur le site Web de jQuery? :-) – Tomalak

+0

Ne trouve pas l'information utile. Est-ce que la documentation officielle est bonne ou parlez-vous des exemples/tutoriels? –

Répondre

2
function queryX(args) { 
    var queryString = [ "XID=", args.XID, "&xNumber=", args.xNumber, "&xAmt=", args.xAmt ].join(""); 
    $.ajax({ 
     url: "X.asp", 
     cache: false, 
     type: "POST", 
     data: queryString, 
     success : function(data) { 
      return data; 
     } 
    }); 
} 
var myReturnData = queryX({ 
    XID : $("input[name='XID']").val(), 
    xNumber : $("input[name='xNumber']").val(), 
    xAmt : $("input[name='xAmt']").val() 
}); 

EDIT:

Cela vous permet la plus grande flexibilité, et si seules les valeurs d'entrée changent (mais les variables de chaîne de requête ne), vous pouvez transmettre tout ce que vous voulez que la valeur.

0

Modifié:

Vous devez commencer par les obtenir tous les éléments sélectionnés, vous pouvez travailler avec eux.

Pour accéder seulement les éléments XForms de #, vous pouvez faire un sélecteur comme celui-ci (vous devriez vérifier la syntaxe, j'ai couru pas, il est juste un exemple):

$('form input[name*='xAmt'] ').each(function(){ alert($(this).val()); alert($(this).parent().attr('name') + $(this).parent().attr('id')); }); 

L'entrée de forme [ name * = 'xAmt'] signifie tout élément à l'intérieur d'un formulaire contenant le terme xAmt. Vous pouvez aussi commencer par, se termine par, etc. Voir les liens ci-dessous.

Dans chaque boucle, vous pouvez accéder à chacun d'entre eux sous la forme $ (this). Vous pouvez accéder au formulaire parent sous la forme $ (this) .parent(), afin de savoir dans quelle forme se trouve l'entrée.

Vous pouvez générer les données dans la boucle, ou faire autre chose avec elles, puis effectuer la poste.

voir:

http://docs.jquery.com/Selectors/attributeContains#attributevalue

http://docs.jquery.com/Selectors

http://docs.jquery.com/Each

http://docs.jquery.com/Attributes/attr#name

http://docs.jquery.com/Traversing/parent#expr

1

La manière flexible de le faire a déjà été répondue ici, mais vous pouvez aussi la faire fonctionner avec votre code actuel. (Pardonnez-moi si c'était trop basique pour ce que vous cherchez.)

Drill vers le bas à partir du nom de forme unique en utilisant le sélecteur descendant CSS (un espace):

var xAmt = $('#xForm'+num+ ' #xAmt').val(); 

Répétez l'opération pour chaque valeur que vous avez besoin et appelez $ .ajax comme vous faites.

+0

Lorsque je fais cela, xAmt n'est pas affecté. Lorsque j'essaie de sortir dans une alerte pour le tester, il est dit [Objet objet] –

+0

woops, j'ai oublié le .val() – ack

Questions connexes