【问题标题】:Disable Enter to submit the form禁用 Enter 提交表单
【发布时间】:2017-05-02 09:06:06
【问题描述】:

我有一个包含多个文本框、文本区域和按钮的表单。 通过在任何文本框中按 ENTER 提交表单。所以我想只在文本框中禁用按 Enter 并在文本区域和按钮中启用。 我找到了一个解决方案,但他们使用的更高版本的 jquery 不适用于我的 jquery 版本。 下面是我写的代码,但它只允许在测试区域而不是在按钮中输入。 我只能访问 jquery 1.3.1 或只有 java 脚本。 请帮助我修复此代码。

$(document).keydown(function(e) {
    var element = e.target.nodeName.toLowerCase();
    var element1 = e.target;
    alert(element1);
    if (element != 'textarea') {
        if (e.keyCode === 13) {
            return false;
        }
    }
});

在这里我不想完全禁用按 ENTER。我只想在文本框中禁用它。

【问题讨论】:

  • 仅供参考,这是绑定该事件的一种极其低效的方式。对于这样的事情,最好找到所有输入的共同父级并在那里分配事件......
  • @acarroz5 标记的问题需要完全禁用。这并不能解决我的问题。这是一个不同的问题。请帮忙
  • 您是如何提交表单的?通过 AJAX 调用还是通过 php 脚本?
  • 当文本框有焦点时(给他们一个类)你可以在表单提交上做一个 preventDefault() 吗?
  • 如果您不能将e.preventDefault() 应用于您的代码,那么您的问题中肯定有一些非常特别的地方。我只是看不出这个问题的特殊性......

标签: javascript jquery


【解决方案1】:
$(function () {
  $('input[type=text]').keypress(function(event) {
    if (event.keyCode == 13) {
      event.preventDefault();
    }
  });
});

Js 小提琴:https://jsfiddle.net/bikrampahi/f0gxev76/

【讨论】:

  • Bikram 甚至在文本框中也没有停止输入。我有一个 jquery 版本 1.3.2。这可能是限制吗?
  • 当我在文本区域中输入 ENTER 时,不会调用此代码中的 ALERT。
  • 这种方式我已经实现了很多次了。如果它不适用于您的 jquery 版本,那么我将在几分钟内检查并更新我的答案。
  • 它甚至没有被调用。
  • 我在代码中添加了 ALERT,但它不起作用。没有弹出警报。jsfiddle.net/f0gxev76/1
【解决方案2】:

将以下属性添加到表单元素,但前提是表单上没有文本区域。

onkeypress="return event.keyCode != 13;"

小提琴:https://jsfiddle.net/uffbost5/1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2014-03-11
    • 1970-01-01
    • 2013-03-03
    • 2011-02-17
    • 1970-01-01
    • 2011-05-29
    • 2010-12-06
    相关资源
    最近更新 更多