библиотека jQuery найти родительскую форму


у меня есть этот HTML

<ul>
    <li><form action="#" name="formName"></li>
    <li><input type="text" name="someName" /></li>
    <li><input type="text" name="someOtherName" /></li>
    <li><input type="submit" name="submitButton" value="send"></li>
    <li></form></li>
</ul>

Как я могу выбрать форму, что input[name="submitButton"] часть ? (когда я нажимаю на кнопку Отправить, я хочу выбрать форму и добавить в нее некоторые поля)

5 196

5 ответов:

Я бы предложил использовать closest, который выбирает ближайший соответствующий родительский элемент:

$('input[name="submitButton"]').closest("form");

вместо фильтрации по имени, я бы сделал так:

$('input[type=submit]').closest("form");

Вы можете использовать ссылку на форму, которая существует на всех входах, это гораздо быстрее, чем .closest() (в 5-10 раз быстрее в Chrome и IE8). Работает на IE6 и 7 тоже.

var input = $('input[type=submit]');
var form = input.length > 0 ? $(input[0].form) : $();

для меня это выглядит как самый простой/быстрый:

$('form input[type=submit]').click(function() { // attach the listener to your button
   var yourWantedObjectIsHere = $(this.form);   // use the native JS object with `this`
});

см. также jquery / js -- как выбрать родительскую форму, на основе которой нажата кнопка отправки?

$('form#myform1').submit(function(e){
     e.preventDefault(); //Prevent the normal submission action
     var form = this;
     // ... Handle form submission
});

как из HTML5 браузеров можно использовать inputElement.form - значение атрибута должно быть удостоверение <form> элемент в том же документе. Подробнее о MDN.