jQuery необходимо установить значение переменной из значения поля ввода формы

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

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

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

Редактировать:

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

<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>
Это было полезно?

Решение

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

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

С помощью этого:

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

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

Другие советы

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

Вам следует попробовать выполнить поиск в контекст:

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top