点击输入chrome中的任何文本框会触发表单提交,即使没有提交按钮也是如此

时间:2010-06-30 09:10:46

标签: javascript jquery validation google-chrome

我正在构建一个使用jQUery验证插件的网站,并希望在提交表单之前验证一些内容。我的代码如下所示

<form>
  <input type="button" value="Submit the Form" onclick="validateAndSubmit()" />
</form>
<script language="javascript">

   function validateAndSubmit(){
   //do some validation and then submit 
 }

</script>

在Firefox中,这非常有效。在Chrome中,当我点击页面中的任意位置时,表单提交会被触发,验证也不起作用。有什么可以避免的吗?如果没有提交按钮,当我们点击输入时浏览器不应该提交表单吗?

3 个答案:

答案 0 :(得分:3)

使用以下语法:

<form onsubmit="return validateAndSubmit()">
...

如果你需要捕获返回键,也许你可以通过将keydown事件绑定到输入并在keyCode上执行一些操作来处理它#13

答案 1 :(得分:2)

试试这个方法:

<form onsubmit="return validateAndSubmit(this);">
  <input type="submit" value="Submit the Form"/>
</form>
<script language="javascript">

   function validateAndSubmit(form_obj){
     if(some_variable == 'correct_value') {
        form_obj.submit();
        return true;
     } else {
        alert('Wrong value');
        return false;
     }
   //do some validation and then submit 
 }

</script>

答案 2 :(得分:1)

我不确定是否有关于此的标准。

无论如何,只需采用更强大的策略,您就可以完全避免麻烦:在表单上将验证实施为onsubmit操作,而不是按钮的onclick操作。我几乎从不在表格中使用按钮;不得不这样做只会让我失望,这对用户来说并不好。

无论如何。表格onsubmit是要走的路。如果您使用不引人注目的Javascript而不是HTML属性,我将不胜感激:)