0

我知道这个问题可能是多余的,但是在查看了几乎所有关于 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>

即使使用此代码,“输入”的按键仍然会创建一个新行而不是提交。我到底在这里不明白什么?是不是缺少一个preventDefault

在此先感谢,蒂姆

4

2 回答 2

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>
于 2013-09-17T18:59:15.433 回答
0

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

为了防止只在文本区域输入新行,您需要停止传播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;
});
于 2013-09-17T19:27:31.777 回答