Длинная история сделана очень короткой, я работаю над интерфейсом, где основные элементы управления включают в себя множество отдельных тегов <form>
.
Я хочу перехватить все события submit(), проверить форму отправки для настраиваемого атрибута и, если она там, выполнить определенный код.
У меня есть это:
$('form').submit(function(event) {
var myForm=$(this);
alert('SUBMIT!');
if(myForm.hasOwnProperty('confirm')){
alert ('Call confirmation');
event.preventDefault();
}
if(myForm.hasOwnProperty('verify')) {
alert ('Call verification');
event.preventDefault();
}
});
но он, похоже, не работает. Предупреждение никогда не запускается, и я не устанавливаю точку останова, установленную в консоли.
Я новичок в JQuery, и я не уверен, что я делаю неправильно. Любые указатели?
myForm
- объект jQuery. Чтобы использовать hasOwnProperty, вам необходимо получить доступ к базовому элементу DOM:
$('form').submit(function(event) {
var myForm = this; // Do not convert to a jQuery object here
alert('SUBMIT!');
if(myForm.hasOwnProperty('confirm')){
alert ('Call confirmation');
event.preventDefault();
}
if(myForm.hasOwnProperty('verify')) {
alert ('Call verification');
event.preventDefault();
}
});
FYI, у jQuery есть собственный метод проверки наличия свойств, называемых .prop, однако лично я думаю, что hasOwnProperty
намного приятнее, поскольку он подчеркивает то, что вы на самом деле пытаетесь достичь. Кроме того, у вас уже есть объект DOM по умолчанию, и все браузеры поддерживают метод hasOwnProperty, поэтому он имеет немного меньше накладных расходов, чем конвертирование в объект jQuery.
$(document).on("submit", "form", function(event) { ... });
и посмотреть, если это работает