2009-03-03 4 views
1

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

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

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

можете ли вы опубликовать некоторые из своих HTML? что может помочь – hunter

+0

да. Разметка необходима, чтобы знать структуру DOM. Поскольку вы используете следующую() структуру DOM, важно знать, будет ли она работать. – tvanfosson

ответ

3

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

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

с этим:

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

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

0

Почему вы используете следующий()?

Вы должны попытаться найти в контексте:

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

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

+0

это не работает, так как «это» относится к выбранному меню, которое только что использовалось. имя формы - это то, что я пытаюсь установить переменной «formdata». имя формы имеет идентификатор «addToCart $ 1», где $ 1 - номер, который является значением поля ввода с классом «pid». – superUntitled

Смежные вопросы