如何禁用我的 textarea 上的 ENTER 键?

Posted

技术标签:

【中文标题】如何禁用我的 textarea 上的 ENTER 键?【英文标题】:How can I disable the ENTER key on my textarea? 【发布时间】: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 的关注下降了一行,这对我来说是个问题。

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

【问题讨论】:

您可以在提交后将焦点放回文本区域。但是如果用户点击“搜索”按钮,焦点不会转到按钮吗? 这能回答你的问题吗? Disable New Line in Textarea when Pressed ENTER 【参考方案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/

【讨论】:

不错。这对我帮助很大!谢谢!

以上是关于如何禁用我的 textarea 上的 ENTER 键?的主要内容,如果未能解决你的问题,请参考以下文章

按下 ENTER 时禁用 Textarea 中的新行

如何禁用转到下一个字段并在 Android 上的 keyCode == “enter” (13) 上提交表单

如何检测“shift+enter”并在 Textarea 中生成新行?

通过点击“Enter”从textarea提交数据

Ctrl+Enter jQuery 在 TEXTAREA

如何禁用 textarea 的 resizable 属性?