Ответ 1
Следующее должно работать:
var submit = curElement.closest('form').find(':submit');
Я пытаюсь получить объект jQuery кнопки отправки в определенной форме (на одной странице есть несколько форм).
Мне удалось получить элемент формы. Это выглядит примерно так:
var curForm = curElement.parents("form");
Текущий элемент имеет контекст HTMLInputElement. В нескольких методах я попытался получить соответствующий элемент отправки формы:
var curSubmit = curForm.find("input[type='submit']");
var curSubmit = $(curForm).find("input[type='submit']");
var curSubmit = curForm.find(":submit");
var curSubmit = $(curForm).find(":submit");
var curSubmit = $(curSubmit, "input[type='submit']");
результат всегда один и тот же (и очень странный). Результатом, который я получаю, является тот же элемент, что и "curElement".
Итак, как я могу получить правильную кнопку отправки?
Следующее должно работать:
var submit = curElement.closest('form').find(':submit');
Это должно работать:
var curSubmit = $("input[type=submit]",curForm);
EDIT: Обратите внимание на отсутствующий '
в селекторе
Поскольку кнопка отправки HTML5 может быть вне формы http://www.w3.org/TR/html-markup/input.submit.html#input.submit.attrs.form, вы можете использовать следующий код, чтобы найти ее:
$(curElement.closest('form').get(0).elements).filter(':submit')
Это работает для меня:
var curSubmit = $("input[type=submit]",this);
где эта указана текущая форма
для ex. для получения имени отправленной кнопки и всех представленных файлов
$( "form" ).on( "submit", function( event ) {
event.preventDefault();
var data = $(this).serialize(); //all input variables
console.log(data); //print data in console
var submit = $("input[type=submit]",this).attr('name');
alert(submit); // name of submit button
});
BTW: Последний селектор выглядит странно. Он выбирает каждый curSubmit (hm?) В каждом теге input[type=submit]
. Может быть, вы имеете в виду var curSubmit = $("input[type=submit]", curForm);
Если вы хотите найти кнопку отправки формы после ее отправки, вы можете найти следующее полезное... Я использую его для отключения кнопки отправки после отправки формы для предотвращения нескольких кликов.
$("form").submit(function () {
if ($(this).valid()) { // in case you have some validation
$(this).find(":submit").prop('disabled', true);
$("*").css("cursor", "wait"); // in case you want to show a waiting cursor after submit
}
});