JQuery необходимо установить значение переменной из значения поля ввода формы - PullRequest
1 голос
/ 03 марта 2009

Я хочу получить значение для ввода формы.

Я думаю, что моя проблема в этой строке:

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

Мне нужно отправить значение поля ввода с именем «pid» на страницу php, однако на странице есть несколько форм, все с полями ввода с именем «pid». Когда у меня просто есть:

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

отправленное значение взято из другой формы на странице.

Edit: Все, что я действительно пытаюсь сделать, - это установить «данные» как массив всех данных в форме. Так что, если есть лучший способ установить переменную formdata в id формы, это тоже сработает.

Ниже приведена функция 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:

Ниже приведена форма:

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

Ответы [ 2 ]

3 голосов
/ 03 марта 2009

Заменить это:

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

С этим:

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

Проверено и работает.

0 голосов
/ 03 марта 2009

Почему вы используете next ()?

Попробуйте поискать в контексте :

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

В любом случае, я рекомендую делать каждый ввод с уникальным атрибутом id. Так что вам не нужно угадывать, какой элемент будет обработан.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...