繁体   English   中英

即使没有提交按钮,在chrome中点击任何文本框的输入都会触发表单提交。

[英]Hitting enter in any textbox in chrome triggers the form submit, even when there is no submit button

我正在建立一个使用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浏览器中,当我在页面上的任意位置点击Enter时,都会触发表单提交并且验证也不起作用。 有什么可以避免的吗? 如果没有提交按钮,当我们按下Enter键时,浏览器是否应该不提交表单?

使用以下语法:

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

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

试试这个方法:

<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>

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

无论如何,您只需采取一种更强大的策略就可以完全避免麻烦:将验证实现为对表单的onsubmit操作,而不是对按钮的onclick操作。 我几乎从不使用表格中的按钮。 不必为您自己做,只会让我失望,这对用户不利。

所以无论如何。 表单onsubmit是必经之路。 如果您使用兼容的Javascript而不是HTML属性,我将不胜感激:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM