Html 当文本区域有焦点时,如何在enter上提交表单?

Html 当文本区域有焦点时,如何在enter上提交表单?,html,forms,Html,Forms,填写表单的文本区域时,按enter键时的默认行为是移动到下一行。如何更改表单的行为,以便在用户点击enter键时提交表单,即使用户在文本区域中也是如此 我使用Firebug检查StackOverflow的注释文本区域(具有这种行为),但看不到任何实现这种效果的JavaScript。有没有一种方法可以在不使用JavaScript的情况下更改textarea的行为? <form id="myform"> <input type="textbox" id="field"/&g

填写表单的文本区域时,按enter键时的默认行为是移动到下一行。如何更改表单的行为,以便在用户点击enter键时提交表单,即使用户在文本区域中也是如此

我使用Firebug检查StackOverflow的注释文本区域(具有这种行为),但看不到任何实现这种效果的JavaScript。有没有一种方法可以在不使用JavaScript的情况下更改textarea的行为?


<form id="myform">
    <input type="textbox" id="field"/>
    <input type="button" value="submit">
</form>

<script>
    $(function () {
        $("#field").keyup(function (event) {
            if (event.which === 13) {
                document.myform.submit();
            }
        }
    });
</script>
$(函数(){ $(“#字段”).keyup(函数(事件){ if(event.which==13){ document.myform.submit(); } } });
为什么要在按enter键时提交textarea

按enter键时,默认情况下将提交“文本”输入。它是单行输入

<input type="text" value="...">

“textarea”不会,因为它受益于多行功能。按enter键提交会失去一些好处

<textarea name="area"></textarea>


您可以添加JavaScript代码来检测回车键和自动提交,但您最好使用文本输入。

没有JavaScript您无法做到这一点。Stackoverflow使用JavaScript库,该库在页面加载时将函数附加到HTML元素

以下是如何使用vanilla JavaScript实现此功能:

<textarea onkeydown="if (event.keyCode == 13) { this.form.submit(); return false; }"></textarea>

由于用户在释放键时更熟悉操作,因此使用onkeyup或keyup()而不是keydown()是更好的做法。很好的解释。@Eric Fortis-onkeyup的观点很好。我将编写一个函数并将其放入我的表单函数文件中,以尝试保持代码的整洁。这个答案很有魅力!在这种情况下,我认为vanilla javascript比jQuery等价物更容易实现。作为旁注,执行
This.form.submit()
不会触发您可能拥有的任何事件侦听器,也不会在表单的onsubmit属性中运行代码。为了触发这些事件,您需要调用
this.form.requestSubmit()
因为我想要一个多行输入框,并且我希望用户能够通过按enter键提交。我将完全取消“提交”按钮。我认为,如果他们想在按enter键时允许提交注释,那么应该取消“添加注释”按钮。请注意,HTML的相关部分是ID,我使用了一个文本框,但它可以是任何你想要附加行为的标记。此外,为了可读性,我更喜欢通过它的ID调用表单,如图所示,这非常方便,特别是如果你的代码中有多个表单。很好,我现在不打算学习jquery。我更喜欢自己编写函数,因为这样我就有机会实践了写JavaScription的时候,如果我们将这个问题重命名为“在textarea中输入时提交表单”,会怎么样?
<textarea class="commentarea"></textarea>
$(document).ready(function() {
    $('.commentarea').keydown(function(event) {
        if (event.which == 13) {
            this.form.submit();
            event.preventDefault();
         }
    });
});