Получение определенного ввода из определенной формы?

#javascript #jquery

#javascript #jquery

Вопрос:

У меня возникают трудности с получением определенного ввода из определенной формы. Какие-нибудь советы?

 <form id ="frm_addtag-1">
    <input type="text" name="tag" id="tag">
</form>

<form id ="frm_addtag-2">
    <input type="text" name="tag" id="tag">
</form>

<form id ="frm_addtag-3">
    <input type="text" name="tag" id="tag">
</form>
  

Если отправлен frm_addtag-1, я хочу получить только ввод тега из этой формы, а не из других форм.

Когда я делаю что-то вроде приведенного ниже, он возвращает входные данные тега из любых других форм, независимо от того, какая форма отправлена.

 var tag = $("#tag");
var tag = tag.attr("value");
  

Ответ №1:

Идентификаторы должны быть уникальными.

После изменения идентификаторов используйте .val() для получения значения элемента.

Кроме того, когда вы отправляете форму, в запрос добавляются только элементы ВНУТРИ этой формы.

Ответ №2:

У вас не может быть нескольких элементов с одинаковым идентификатором на одной странице. Почему бы не сделать что-то вроде этого:

 <form id ="frm_addtag-1">
    <input type="text" name="tag1" id="tag1">
</form>

<form id ="frm_addtag-2">
    <input type="text" name="tag2" id="tag2">
</form>

<form id ="frm_addtag-3">
    <input type="text" name="tag3" id="tag3">
</form>
  

И это для получения значения:

 $('form').bind('submit', function(e){ // when any form on the page is submitted
    e.preventDefault(); // prevent the actual submit so the browser won't leave the current page
    var tag = $('input[name^="tag"]', this).val(); // the value of an input element whose name attribute starts with "tag" and that is a child of the current form
});