JavaScript event.preventDefault()与其他争论

时间:2016-05-21 01:14:06

标签: javascript jquery validation preventdefault

我有一个函数调用,我想传递参数btnSubmit:

$(btnSubmit).click( validate(btnSubmit, event) );

我想首先阻止表单提交然后验证。但是,无论如何它都提交了。如果我不通过btnSubmit,它可以工作,但我想这样做。

function validate (btnSubmit, event) {
    event.preventDefault();
}

1 个答案:

答案 0 :(得分:0)

当你做的时候:

$(btnSubmit).click( validate(btnSubmit, event) );

您立即调用validate函数,并将其返回值作为$(btnSubmit).click()的回调传递。由于该函数不返回任何内容,因此实际上没有创建事件处理程序。

您有两种可能的解决方法:

  1. 如斜视所示,请将validate函数更改为使用this而不是btnSubmit,并将event作为第一个参数:

    function validate (event) {
      event.preventDefault();
    }
    

    然后分配事件处理程序:

    $(btnSubmit).click(validate);
    
  2. 使用将btnSubmitevent传递给validate的匿名函数:

    $(btnSubmit).click(function(event) {
      validate(btnSubmit, event)
    });