JQuery найти родительскую форму - PullRequest
207 голосов
/ 25 октября 2009

у меня есть этот 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 ]

465 голосов
/ 25 октября 2009

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

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

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

$('input[type=submit]').closest("form");
53 голосов
/ 25 июля 2011

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

var input = $('input[type=submit]');
var form = input.length > 0 ? $(input[0].form) : $();
13 голосов
/ 20 сентября 2013

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

$('form input[type=submit]').click(function() { // attach the listener to your button
   var yourWantedObjectIsHere = $(this.form);   // use the native JS object with `this`
});
0 голосов
/ 13 июля 2018

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

0 голосов
/ 07 марта 2010

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

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