当textarea有焦点时,如何在输入时提交表单?

and*_*rew 49 html forms

填写表单的textarea时,按下回车键时的默认行为是移动到下一行.我如何更改表单的行为,以便即使用户在textarea中,它也会在用户点击输入时提交?

我使用Firebug来检查Stack Overflow的注释textarea(有这种行为),但是看不到任何实现这种效果的JavaScript.有没有办法在不使用JavaScript的情况下改变textarea的行为?

Bal*_*usC 105

没有JavaScript,你不能这样做.Stackoverflow使用jQuery JavaScript库,它在页面加载时将函数附加到HTML元素.

以下是使用vanilla JavaScript的方法:

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

键码13是回车键.

以下是使用jQuery的方法,就像Stackoverflow一样:

<textarea class="commentarea"></textarea>
Run Code Online (Sandbox Code Playgroud)

$(document).ready(function() {
    $('.commentarea').keydown(function(event) {
        if (event.which == 13) {
            this.form.submit();
            event.preventDefault();
         }
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 由于用户在释放密钥时更熟悉操作,因此使用onkeyup或keyup()而不是keydown()是一种更好的做法. (13认同)

Eri*_*tis 6

<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>
Run Code Online (Sandbox Code Playgroud)


jth*_*son 6

你为什么要在输入时提交textarea?

按Enter键时,默认情况下会提交"文本"输入.它是单线输入.

<input type="text" value="...">
Run Code Online (Sandbox Code Playgroud)

"textarea"不会,因为它受益于多线功能.提交输入会带走一些好处.

<textarea name="area"></textarea>
Run Code Online (Sandbox Code Playgroud)

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

  • 因为我想要一个多行输入框,我希望用户能够通过按Enter进行提交.我将完全取消提交按钮.我认为如果他们要在按下回车键时允许提交评论,那么SO应该摆脱他们的添加评论按钮 (2认同)