Frage

Ich suche den Wert einer Formulareingabe zu greifen.

Ich glaube, mein Problem auf dieser Linie ist:

    var vid = $(this).next(".pid").val();

Ich brauche den Wert des Eingabefeldes ‚pid‘ zu einer PHP-Seite mit dem Namen zu senden, aber es gibt verschiedene Formen auf der Seite, die alle mit Eingabefeldern namens ‚pid‘. Wenn ich nur haben:

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

der Wert, der gesendet wird, ist von einem anderen Formular auf der Seite.

Edit: Alles, was ich wirklich zu tun bin versucht wird, die „Daten“ ein Array von allen Daten in Form zu sein. Also, wenn es eine bessere Art und Weise ist es, die „Formulardaten“ Variable auf die ID der Form zu setzen, das wäre zu arbeiten.

Im Folgenden finden Sie die jQuery-Funktion:

$(".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:

Im Folgenden finden Sie ein Formular:

<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>
War es hilfreich?

Lösung

Ersetzen Sie diese:

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

Mit diesem:

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

geprüft und Arbeiten.

Andere Tipps

Warum verwenden Sie next ()?

Sie sollten versuchen, in dem Kontext suchen :

$(".pid", this) // if "this" is the current form

Auf jeden Fall empfehlen, ich jeden Eingang mit einzigartigem id-Attribute zu machen. So müssen Sie wird nicht erraten, welches Element verarbeitet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top