Javascript 通过按enter#2防止用户提交表单

Javascript 通过按enter#2防止用户提交表单,javascript,jquery,html,Javascript,Jquery,Html,在上一个问题中,我问了同样的问题,但答案是当用户在文本框中时,我不会阻止提交 因此,基本上我需要的是阻止一个人提交表单的能力,除非用户明确单击submit按钮 编辑: 基本上,这样做的主要原因是这是一项雇主调查。这方面的人在技术上不是最精明的,而我为之制作这张照片的客户已经要求了这张照片 $('input').keydown(function(e){ return e.keyCode !== 13; }); 。。。顺便说一句,我不建议这样做。你为什么要这样做 通过点击enter提交表单

在上一个问题中,我问了同样的问题,但答案是当用户在文本框中时,我不会阻止提交

因此,基本上我需要的是阻止一个人提交表单的能力,除非用户明确单击submit按钮

编辑:

基本上,这样做的主要原因是这是一项雇主调查。这方面的人在技术上不是最精明的,而我为之制作这张照片的客户已经要求了这张照片

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

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

你为什么要这样做

通过点击enter提交表单是web表单上的标准预期行为

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


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

我建议使用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()仅在
是表单的直接子级时才起作用。

如果表单有一个文本类型的输入,并且用户在该输入中点击enter,则表单将被提交,根据HTML4规范。防止这种情况发生的最简单的方法是添加另一个隐藏的文本输入

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

我从哲学上同意海报上说的“你为什么要这样做?”但我也有人问我这种行为,所以我和你是同舟共济的

我以前使用过口渴者42的解决方案,但这只在它是GET而不是POST时对我有效。它似乎也是特定于浏览器的——当用户点击文本框中的enter键时,Firefox不会提交表单,但Safari会提交表单。(Firefox 3.5.3、Safari 4.0.3、MacOSX)

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

话虽如此,我所做的似乎是从其他地方借来的。在Firefox、Safari和IE8中测试。标题的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);"

我不太喜欢它,但如果它能让人们快乐…

你是说?文本区域中的默认操作是插入换行,而不是提交。不,我指的是文本框。此外,使用上一个问题中的代码,当他们选择单选按钮时,也不会阻止他们按enter键。这里有很多文本框,还有单选按钮和一些复选框,如果你在一个文本框中有两个逻辑形式的话。用户甚至不知道它们是分开的。当您需要页面使用javascript disabledi之前尝试过类似的方法,但它似乎不适合我(我无法让代码正常工作,或者代码不好。我不知道javascript的来龙去脉)。而且,在您的实现中,我必须将它放在每个输入字段上。我的调查结果大概有300条,我得把它放上去。它还依赖于javascript,所以这方面不会真正改变。我同意,我对javascript的依赖并不满意。据我所知,没有可靠的方法可以跨浏览器执行此操作。至于“把它放在每个输入字段上”。。。您是手工编写这些字段,还是以编程方式编写?即使您是手工为输入字段编写文本,这也不是一个很坏的负担。只需在顶部添加一点javascript,并使用字符串替换在每个输入字段的末尾添加43个字符。。。