Как перехватить все события submit () через jquery

0

Длинная история сделана очень короткой, я работаю над интерфейсом, где основные элементы управления включают в себя множество отдельных тегов <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, и я не уверен, что я делаю неправильно. Любые указатели?

Теги:

1 ответ

4
Лучший ответ

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.

  • 0
    Это хорошо знать и ценится, но сейчас вся функция не срабатывает - я даже не получаю предупреждение (). Как только я это понял , я вполне уверен, что смогу отработать все остальное ...
  • 0
    У вас есть 3 оповещения;) Используйте $(document).on("submit", "form", function(event) { ... }); и посмотреть, если это работает
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню