Textarea未在提交时提交

时间:2013-09-17 18:25:01

标签: jquery forms submit

我知道这个问题可能是多余的,但在查看了stackoverflow上的几乎所有相关问题之后,我仍然无法让我的问题“消失”。问题是:

按下“enter”键,提交textarea内容而不是创建新行。

这就是我正在使用的:
jQuery(来自这里类似问题的答案):

  $('#message').keypress(function(e){
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code == 13){
      $('#form').submit();
    }
  });

HTML:

<div class="message">
<form name="form" class="form" id="form" action="chatsendmesg.php" method="POST">
<textarea rows="2" name="message" id="message" class="message" placeholder="RM911 Chat" cols="26"></textarea>
<input id="submit" class="submit" type="submit" value="Send" name="submit">
</form>

即使使用此代码,按下“enter”仍然会创建一个新行而不是提交。到底是什么我不明白?是缺少preventDefault吗?

提前致谢, 添

2 个答案:

答案 0 :(得分:1)

这有效......

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
    <script>
        $(function(){
             $("#message").keypress(function(e){
                var code = (e.keyCode ? e.keyCode : e.which);
                if (code == 13){
                      $("#form1").submit();   
                }
              });
        });
    </script>
  </head>
  <body>
    <div id="message">
      <form name="form1" class="form1" id="form1" action="chatsendmesg.php" method="post">
          <textarea rows="2" name="message" id="message" class="message" placeholder="RM911 Chat" cols="26"></textarea> 
          <input id="submit1" class="submit1" type="submit" value="Send" name="submit1" />
      </form>
    </div>
  </body>
</html>

答案 1 :(得分:0)

preventDefault将不起作用,因为对于textarea,默认操作是将字符(由击键表示)放在文本区域中。也就是说,您的所有按键都不会进入文本区域。

为了防止只有新行被输入文本区域,您需要停止keypress事件的传播,但仅当按下的键是ENTER时,才会这样:

$("#void").keypress(function(e) {
    var code = (e.keyCode ? e.keyCode : e.which);
    if (code == 13){
      $('#form').submit();
      return false;  // stop propagation of the keypress
    }
   return true;
});