jQuery doit définir la valeur de la variable à partir de la valeur d'une zone de saisie de formulaire
Question
Je cherche à saisir la valeur d'une entrée de formulaire.
Je pense que mon problème est sur cette ligne:
var vid = $(this).next(".pid").val();
Je dois envoyer la valeur de la zone de saisie nommée 'pid' à une page php. Cependant, la page contient plusieurs formulaires, tous avec des zones de saisie nommées 'pid'. Quand j'ai simplement:
next(".pid").val();
la valeur envoyée provient d'un autre formulaire de la page.
Modifier: Tout ce que j'essaie vraiment de faire est de définir les "données". être un tableau de toutes les données du formulaire. Donc, s’il existe un meilleur moyen de définir les " formdata " variable à l'identifiant du formulaire, cela fonctionnerait aussi.
Ci-dessous, la fonction jQuery:
$(".varSel").live("change", function(){
var vid = $(this).next(".pid").val();
var formdata = $('form#addToCart'+ vid).serialize();
$.ajax({
type: "POST",
url: "library/varPrice.php",
data: formdata,
success: function(html){
$('.price').html(html);
}
});
});
EDIT:
Ci-dessous un formulaire:
<form name='addToCart' id='addToCart99' action='cart.php?action=add' method='post'>
<ul class='vars' id='varlist_p99'>
<li>
<label for="color">color</label>
<select id="color" name="color" class='varSel'>
<option>blue</option>
<option>green</option>
<option>red</option>
</select>
</li>
<li>
<label for="size">size</label>
<select id="size" name="size" class='varSel'>
<option>large</option>
<option>small</option>
</select>
</li>
<li>
<div class='price'>
$
</div>
</li>
<li>
<input type='hidden' value='99' name='pid'>
<input type='submit' class='buynow' value=''>
</li>
</ul>
</form>
La solution
Remplacez ceci:
var vid = $(this).next(".pid").val();
var formdata = $('form#addToCart'+ vid).serialize();
Avec ceci:
var formdata = $(this).parents('form').serialize();
Testé et fonctionne.
Autres conseils
Pourquoi utilisez-vous next ()?
Vous devriez essayer de chercher dans le contexte :
.$(".pid", this) // if "this" is the current form
Quoi qu’il en soit, je recommande de faire chaque entrée avec un attribut id unique. Vous n'avez donc pas à deviner quel élément sera traité.