如何拦截提交按钮点击?

时间:2015-12-03 11:14:37

标签: javascript jquery

我有一个表单和一个提交按钮。

我想快速检查一些字段(如果没有填写,则将其他字段留空)。

我宁愿不改变按钮的HTML,我只想在jQuery中执行此操作而不添加任何" onclick"属性到按钮。

HTML:

<input class="cssButton button_in_cart" type="submit" value="Add to Bag" style="width: 80px;">

jQuery(尝试过):

$("input.button_in_cart").mousedown(function () {
    alert("clicked");   
});

这不起作用,它仍然提交表单而不显示警报。感谢。

4 个答案:

答案 0 :(得分:13)

不要使用任何形式的点击事件进行表单处理,因为键盘提交会绕过您的代码!

使用submit事件处理程序,并返回false(或e.preventDefault())以停止提交程序。

e.g。

$('#myform').submit(function(e){
   // Do your validation here
   // ...
   // Then conditionally stop the submit from firing
   if (someValidateFails){
      e.preventDefault()
   }
});

答案 1 :(得分:0)

首先将类型设为'按钮'

<input class="cssButton button_in_cart" type="submit" value="Add to Bag" style="width: 80px;">


$("input.button_in_cart").mousedown(function (e) {
   e.preventDefault();
    alert("clicked");   
    // do the form submit
   document.forms[0].submit();
});

答案 2 :(得分:0)

您可以使用函数的返回值来阻止表单提交

<form name="myForm" onsubmit="return validateMyForm();"> 

和功能类似

<script type="text/javascript">
function validateMyForm()
{
  if(check if your conditions are not satisfying)
  { 
    alert("validation failed false");
    returnToPreviousPage();
    return false;
  }

  alert("validations passed");
  return true;
}
</script>

对于Chrome 27.0.1453.116 m,如果上述代码不起作用,请将事件处理程序的参数的returnValue字段设置为false以使其生效。

答案 3 :(得分:0)

“停止”活动有两种主要方式。 第一个是return false;,另一个是e.preventDefault();。 这两种方式的不同之处在于使用e.preventDefault();将阻止整个事件继续进行,并且不会传播DOM。

我会使用以下内容:

$("input.button_in_cart").mousedown(function () {
    alert("clicked");   
    return false;
})