jQuery doit définir la valeur de la variable à partir de la valeur d'une zone de saisie de formulaire

StackOverflow https://stackoverflow.com/questions/604903

  •  03-07-2019
  •  | 
  •  

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>
Était-ce utile?

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é.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top