【问题标题】:How can I disable the ENTER key on my textarea?如何禁用我的 textarea 上的 ENTER 键?
【发布时间】:2011-10-06 13:13:58
【问题描述】:
<form name='qform'>
<textarea name='q' rows='3' cols='60' wrap='hard' id='q' onkeydown="if (event.keyCode == 13) document.getElementById('clickit').click()"></textarea>
<input type='button' value='search' id='clickit' onclick="get();">
</form>

我有这个表单...它没有提交按钮,因为我使用的是 jquery,并且在这个表单下是一个 div 区域,将显示结果。它是一个没有输入框但有一个文本区域的搜索引擎。这是因为它将是一个多词搜索器。

问题是,如果我按下回车键,则提交查询并且一切正常……但是对 textarea 的关注下降了一行,这对我来说是个问题。

基本上我希望输入只有一个功能(提交)结束。

【问题讨论】:

标签: javascript jquery events textarea


【解决方案1】:
$(document).ready(function() {

    $('textarea').keypress(function(event) {

        if (event.keyCode == 13) {
            event.preventDefault();
        }
    });
});

【讨论】:

    【解决方案2】:

    如果您不想要多行,为什么不直接使用&lt;input type="text"&gt;?您提到它将是一个“多词搜索器”。为什么这需要&lt;textarea&gt;

    更新

    试试这个

    $('textarea').bind('keypress', function(e) {
      if ((e.keyCode || e.which) == 13) {
        $(this).parents('form').submit();
        return false;
      }
    });
    

    【讨论】:

    • 您可能需要将return false; 更改为e.preventDefault(),以防万一在 DOM 上进一步存在按键绑定
    • 假设你不想要这些绑定,是的 :)
    • 原因:我正在发送短信,它们不能有换行符,但同时我不希望文本框的显示向右滚动——因此文本区域是合适的.
    • @Andy 假设您在谈论 SMS,通常允许换行。
    【解决方案3】:

    在 jquery 函数中,使用 event.preventdefault ,然后执行您喜欢的操作。 例如

    <script>
    $("a").click(function(event) {
      event.preventDefault();
    //Do your logic here
    });
    </script>
    

    http://api.jquery.com/event.preventDefault/

    【讨论】:

    • 不错。这对我帮助很大!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 2021-06-30
    • 1970-01-01
    • 2013-09-17
    • 2012-08-05
    • 2016-04-12
    • 2011-11-08
    相关资源
    最近更新 更多