长篇故事很短,我正在前端工作,主要控件涉及很多个人<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相当陌生,我不确定自己做错了什么。有什么指针吗?
答案 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对象的开销略小。