如何通过jquery拦截所有submit()事件

时间:2014-03-21 08:30:22

标签: javascript jquery

长篇故事很短,我正在前端工作,主要控件涉及很多个人<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 个答案:

答案 0 :(得分:4)

myForm是一个jQuery对象。您需要访问底层DOM元素才能使用hasOwnProperty

$('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();
    }
});

仅供参考,jQuery有自己的方法来检查是否存在名为.prop的属性,但我个人认为hasOwnProperty更好,因为它突出了你实际想要实现的目标。此外,默认情况下您已经拥有DOM对象,并且所有浏览器都支持hasOwnProperty方法,因此这比转换为jQuery对象的开销略小。