【问题标题】:Triggering the enter in a textarea触发文本区域中的输入
【发布时间】:2011-07-18 04:19:35
【问题描述】:

我注意到发送 cmets 状态的新 Facebook 方式。基本上,当您撰写评论时,您没有可单击的按钮,而是按下“输入”键以提交评论。现在我也想做这个东西。我正在考虑可能的解决方案。我想到<input> 是在按下回车按钮的情况下提交的,但 textarea 不是。

  • 要么我写一个输入(输入文本)并设置一个高度,女巫覆盖超过一行
  • 或者我必须添加一个 textarea 并在用户按 Enter 时以某种方式提交该表单。

哪个是最好的?如果答案 = 秒,我该怎么做?

【问题讨论】:

    标签: html forms input triggers textarea


    【解决方案1】:

    这取决于你如何定义最佳。

    如果您想要一个不需要 javascript 的非常简单的解决方案,第一个是最好的

    如果您希望在文本中允许换行符,最好使用秒数。

    如果你想使用文本区域解决方案,你可以这样做:(使用 jQuery)

    <textarea id="mytextarea"></textarea>
    <script>
    $('#mytextarea').keypress(function(e){
      if(e.keyCode == 13 && !e.shiftKey) {
       e.preventDefault();
       this.form.submit();
      }
    });
    </script>
    

    这个解决方案的好处是它仍然允许人们进行换行,只要他们在按下回车键时按住 shift 键。就像在 Skype 上一样。

    此处的示例:http://jsfiddle.net/MEtGg/

    【讨论】:

      【解决方案2】:

      不需要框架(比如jQuery)就为了这个:

      var textarea = document.getElementById("area");
      
      try {
          textarea.addEventListener("keydown", keyPress, false);
      } catch (e) {
          textarea.attachEvent("onkeydown", keyPress);
      }
      
      function keyPress(e) {
          if (e.keyCode === 13) {
              alert("Enter key was pressed")
          } else {
              return;
          }
      }
      

      看一个例子:http://fiddle.jshell.net/yuCAd/3/

      【讨论】:

        【解决方案3】:

        当焦点在您的文本区域时,我会在 enter 键上注册一个键侦听器,这是 imo 最常见和最好的方式。

        在 jquery 中你可以使用keydown/up method

        【讨论】:

          【解决方案4】:

          我会选择第二个。并会使用 javascript 拦截回车键,然后调用函数进行提交。 这个答案应该是这样的:Trigger a button click with JavaScript on the Enter key in a text box

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-06-08
            • 2010-10-30
            • 1970-01-01
            • 2012-08-26
            • 2011-06-10
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多