jQuery необходимо установить значение переменной из значения поля ввода формы
Вопрос
Я хочу получить значение из формы ввода.
Я думаю, что моя проблема заключается в этой строке:
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.Таким образом, вам не нужно угадывать, какой элемент будет обработан.