通过按Enter#2阻止用户提交表单

时间:2009-05-28 23:22:59

标签: javascript jquery html

在之前的一个问题中,我问了同样的问题,但是当用户在文本框中时,我没有阻止提交的答案。

基本上我需要的是能够阻止某人提交表单,除非明确点击提交按钮。

编辑:

基本上这样做的主要原因是这是雇主调查。在这方面的人不会是技术上最精明的,我正在为此做的客户要求这样做。

6 个答案:

答案 0 :(得分:6)

$('input').keydown(function(e){
    return e.keyCode !== 13;
});

......顺便说一句,我不建议这样做。

答案 1 :(得分:5)

我将表单设置为onsubmit =“return false”并执行此操作

<input type="button" value="Submit" onClick="document.Survey.submit()" style="font-size: 1.25em;">

答案 2 :(得分:1)

我建议使用onsubmit处理程序阻止提交表单(返回false),然后在单击按钮时使用javascript提交表单。

<form action="accion.htm" onsubmit="return false;">
    <input type="text" name="pepe" />
    <a onclick="this.parentNode.submit();" href="javascript:;">submit</a>
</form>

请注意,这只是一个示例,事件处理程序不应该内联添加,而this.parentNode.Submit()仅在<a>是表单的直接子项时才有效。

答案 3 :(得分:0)

为什么需要这样做?

通过点击输入提交表单是网络表单上的标准预期行为。

如果您在填写或选择所有选项之前尝试确保他们没有意外提交表单,请使用验证javascript函数检查所有字段中的条目表格。如果缺少某些内容,请弹出一个警告框,告诉他们缺少的内容并返回 false 。 (在表单标记中添加onsubmit ='myValidateForm();'选项)

如果填写了所有必需的数据,则允许使用输入并单击按钮提交表单应该没有问题。

答案 4 :(得分:0)

如果表单有一个类型为text的输入,并且用户点击输入该输入,则表单将按照HTML 4规范提交。防止这种情况发生的最简单方法是添加另一个隐藏文本输入

答案 5 :(得分:0)

我同意这些海报的观点,他们说:“你为什么要这样做?”但我也有人问我这种行为,所以我和你在同一条船上。

之前我使用过Thirster42的解决方案,但这只适用于GET,而不是POST。它似乎也是特定于浏览器的 - 当用户点击进入文本框时,Firefox不会提交表单,但Safari会。 (Firefox 3.5.3,Safari 4.0.3,MacOSX)

我在网上看到的大部分内容都像this:“问:我该怎么做?答:基本上,你没有。”我认为这是因为平台和Web浏览器之间的行为不一致,而适用于Firefox的行为可能不适用于IE或Opera。此外,如果用户在浏览器中禁用了javascript,则无法依赖javascript。

所有这一切,这就是我所做的似乎有用的东西,借鉴here和其他各个地方。在Firefox,Safari和IE 8中测试。用于标题的JavaScript:

function disableEnterKey(e)
{
   var key;
   if(window.event)
      key = window.event.keyCode;     // IE 
   else
      key = e.which;     // Firefox
   if(key == 13)
      return false;
   else
      return true;
 }

然后在每个输入字段:

:onKeyDown "return disableEnterKey(event);"

我不喜欢它,但如果它让人开心......