阻止用户提交表单

Posted

技术标签:

【中文标题】阻止用户提交表单【英文标题】:prevent user from submitting form 【发布时间】:2012-12-13 18:05:13 【问题描述】:

我有我的网站,其中有 电子邮件 pdf 功能

程序是:

当用户输入电子邮件,然后他必须点击提交按钮 点击提交按钮后,表单不会提交,表单会隐藏, 还有另一个隐藏的 div,其中包含 感谢信息,并带有 Ok 按钮。 当用户点击确定按钮时,表单将提交。

但现在的问题是:

当用户输入电子邮件时,如果他不小心按了 ENTER,那么表单会被提交而不会显示感谢信息。

我想在用户按下 Enter 键时禁用 ENTER

【问题讨论】:

你试过了吗:w3schools.com/jsref/event_onkeydown.asp @Robuust 这不是一个好的建议。隐含的eval,缺乏关注点分离…… Disable ENTER when user Press Enter key 你做了一些 RnD... 见 this & this & this 【参考方案1】:

如果回车键返回 false,请检查哪个键被按下。使用 jQuery 这很容易。

var field = $('.classname');

field.keydown(function(e)
    if(e.which==13)
        return false;
    
);

【讨论】:

现在看起来好多了。请注意,on("keydown", ... 也是一种可能性(并且与其他事件更加一致)。 @JanDvorak Thanx 4 小费 @InGodITrust 它正在停止我所有的按键事件。 @Surinder 它应该只停止enter @Surinder 你加载了 jquery 吗?【参考方案2】:

你可以试试这个禁用按键提交

$(function() 

    $("form").on("keypress", function(e) 
            if (e.keyCode == 13) return false;
      );

);

【讨论】:

【参考方案3】:

使用此代码,肯定会为您工作:

var class = $('.classname');
function stopRKey(evt) 
var evt = (evt) ? evt : ((event) ? event : null);
var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
if ((evt.keyCode == 13) && (node.type=="text")) return false;


class.onkeypress = stopRKey;

【讨论】:

我不喜欢document.onkeypress = ...;首先,也许您不应该停止 all 输入键。其次,这将覆盖任何以前的事件处理程序。使用addEventListener 或 jQuery(特别是因为它可用)。【参考方案4】:

使用常规的 html 按钮而不是提交按钮。在按钮的 onclick 事件中编写一些 javascript 来显示/隐藏 DIV。谢谢 DIV 上的按钮使其成为提交按钮。

【讨论】:

【参考方案5】:

将其放入脚本中:

<script language="JavaScript">
function TriggeredKey(e)

    var keycode;
    if (window.event) keycode = window.event.keyCode;
    if (window.event.keyCode == 13 ) return false;

</script>

【讨论】:

以上是关于阻止用户提交表单的主要内容,如果未能解决你的问题,请参考以下文章

阻止用户返回并查看以前提交的表单Rails

角度模糊验证阻止提交单独的表单

Laravel 5.5 阻止表单提交按 Enter

如果不满足最小和最大条件,则阻止表单提交

requiredfield 验证器正在阻止提交另一个表单

为啥我的 Ajax 发布请求在表单提交中被阻止?