2010-12-11 65 views
44

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

我用Firebug来结帐堆栈 溢出的评论textarea(它有这种行为),但看不到任何实现这种影响的JavaScript。有没有办法改变textarea的行为而不使用JavaScript?

+3

如果我们重命名这个问题“提交进入文本区域时表”? – 2016-07-05 02:56:21

回答

95

如果没有JavaScript,您无法做到这一点。 Stackoverflow使用jQuery JavaScript库,它在页面加载时将功能附加到HTML元素。

这里是你如何能有基本的JavaScript做到这一点:

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

键码13是回车键。

这里是你如何能与jQuery做这样的不#1:

<textarea class="commentarea"></textarea> 

$(document).ready(function() { 
    $('.commentarea').keydown(function(event) { 
     if (event.keyCode == 13) { 
      this.form.submit(); 
      return false; 
     } 
    }); 
}); 
+11

由于用户在释放密钥时更加熟悉操作,因此最好使用onkeyup或keyup()而不是keydown()。 – 2010-12-11 21:04:10

+0

很好的解释。 @Eric Fortis - 关于onkeyup的好处。 – andrew 2010-12-12 14:42:01

+0

我会写一个函数,把它放在我的表单函数文件中,尽量保持代码的清洁。 – andrew 2010-12-12 14:43:24

4
<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> 
+0

注意HTML的相关部分是ID,我使用了一个文本框,但它可以是任何要附加行为的标签。同样为了便于阅读,我更喜欢通过它的ID来调用表单,如果在代码中有多个表单,这非常方便。 – 2010-12-12 16:11:31

+0

不错,即时不在学习jquery上。我更喜欢自己编写函数,因为那时我有机会练习编写javascript – andrew 2010-12-12 16:49:11

5

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

当您按Enter键时,默认会提交“文本”输入。这是一个单行输入。

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

“textarea”不会,因为它受益于多线功能。在提交时输入会带走一些好处。

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

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

+1

因为我想要一个多行输入框,并且我希望用户能够通过按Enter键进行提交。我将完全消除提交按钮。我认为如果他们打算在按下回车键时允许评论被提交,那么SO应该摆脱它们的“添加注释”按钮 – andrew 2010-12-12 14:39:04