2009-03-03 8 views
1

Je cherche à saisir la valeur d'une entrée de formulaire.jQuery doit définir la valeur de la variable à partir de la valeur d'une zone de saisie 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 du nom « pid » à une page php, mais il existe plusieurs formes sur la page, toutes avec boîtes de saisie nommées 'pid'. Quand j'ai simplement:

next(".pid").val(); 

la valeur qui est envoyée provient d'un autre formulaire sur la page.

Éditer: Tout ce que j'essaie vraiment de faire est de définir les "données" comme un tableau de toutes les données dans le formulaire. Donc, s'il y a une meilleure façon de définir la variable "formdata" sur l'id du formulaire, cela fonctionnera aussi.

est inférieure à 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:

est un formulaire ci-dessous:

<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> 
+0

pouvez-vous poster une partie de votre HTML? cela pourrait aider – hunter

+0

oui. Le balisage est nécessaire pour connaître la structure DOM. Puisque vous utilisez next(), la structure DOM est essentielle pour savoir si cela fonctionnera. – tvanfosson

Répondre

3

Remplacer ceci:

var vid = $(this).next(".pid").val(); 
var formdata = $('form#addToCart'+ vid).serialize(); 

Avec ceci:

var formdata = $(this).parents('form').serialize(); 

testé et fonctionne.

0

Pourquoi utilisez-vous suivant()?

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 attribut unique identifiant. Vous n'avez donc pas besoin de deviner quel élément sera traité.

+0

cela ne fonctionne pas, car "ceci" fait référence au menu de sélection qui vient d'être utilisé. le nom de la forme est ce que j'essaye de mettre à la variable "formdata". le nom du formulaire a l'ID de "addToCart $ 1", où $ 1 un nombre qui est la valeur de la boîte d'entrée avec la classe de "pid". – superUntitled

Questions connexes