如何拦截onclick事件

时间:2009-10-01 21:54:53

标签: javascript jquery

我想在页面从onclick上回发之前拦截按钮的onclick事件(不提交)。

我遇到了一些麻烦:

$(document).ready() { function() {
    function validate() { 
        ...
    }

    var oldOnClick = $("input[value=OK]").attr("onclick");
    $("input[value=OK]").attr("onclick", "if(!validate()) { return false; }" + oldOnClick));
});

4 个答案:

答案 0 :(得分:7)

如果您仍然希望处理按钮单击事件而不是所有建议的表单提交事件,您可以使用匿名函数执行此类操作,以调用oldOnClick函数,保留上下文和事件参数:< / p>

$(document).ready(function () {
  function validate() { 
    // ...
  }

  var oldOnClick = $("input[value=OK]").get(0).onclick;
  $("input[value=OK]").click(function (e) {
    if(!validate()) {
      return false;
    }
    oldOnClick.call(this, e); // enforce the context and event argument
  });
});

答案 1 :(得分:4)

您应该使用submit event

,而不是尝试拦截onClick事件

为什么?简单,并非所有表单都是通过点击,标签,输入等提交的?

$("form").submit(function() { // do validation/stuff here });可以解决问题。

您可以return false;停止表单提交,或return true;如果您想通过。在.submit内进行验证。

答案 2 :(得分:0)

在表单提交之前调用OnSubmit。 您甚至可以取消该活动,因此不会提交表格。

答案 3 :(得分:0)

e.preventDefault();

更具体地说,你需要这样做

$("#Your_form_id").submit(function(e) {
e.preventDefault();
// your code
});

另一种方法是,杰克说,做完一些工作后返回假...即:

$("#Your_form_id").submit(function() {
// your code
return false;
});

请参阅Submit上的Jquery文档和一般的Events