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