我调用了一个函数,我想传递参数btnSubmit:
$(btnSubmit).click( validate(btnSubmit, event) );
我想先阻止表单提交,然后再进行验证。但是,它还是会提交。如果我不传递 btnSubmit,它可以工作,但我想这样做。
function validate (btnSubmit, event) {
event.preventDefault();
}
当你在做:
$(btnSubmit).click( validate(btnSubmit, event) );
您立即调用 validate
函数,并将其返回值作为 $(btnSubmit).click()
的回调传递。由于该函数不返回任何内容,因此实际上不会创建任何事件处理程序。
您有两种可能的解决方案:
正如斜视建议的那样,将
validate
函数更改为使用this
而不是btnSubmit
,并将event
作为第一个参数:function validate (event) { event.preventDefault(); }
然后像这样分配事件处理程序:
$(btnSubmit).click(validate);
使用将
btnSubmit
和event
传递给validate
的匿名函数:$(btnSubmit).click(function(event) { validate(btnSubmit, event) });