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

我遇到了一些麻烦:

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

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

最佳答案

如果仍然要处理按钮单击事件,而不是按照建议的所有形式提交表单提交事件,则可以使用匿名函数执行以下操作,以调用oldOnClick函数,并保留上下文和事件参数:

$(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
  });
});

10-06 05:15