提交textarea按回车键

时间:2017-07-24 20:02:21

标签: javascript jquery submit

我的表单中只有一个textarea。我想提交它,但只按 Enter 。在textarea Enter 时的默认事件将转到新行,我想更改它。

function textSubmit() {
    $("textarea").on("keypress", function(e) {
        if (e.keyCode == 13) {
            e.preventDefault();
            $(this).parents('form').submit();
        }
        else if (e.altKey && e.keyCode == 13) {
        //else if (e.keyCode == 18 && e.keyCode == 13) {
            e.preventDefault();
            $(this).val($(this).val() + "\n");
        }
    });
}

如何在按 Enter 而不是转到新行时提交表单?

3 个答案:

答案 0 :(得分:2)

使用keydown代替keypress作为keypress仅在生成可打印字符时触发:



$("textarea").on("keydown", function(e) {
  if(e.altKey && e.keyCode === 13) {
      e.preventDefault();
      e.stopPropagation();
      $(this).val($(this).val() + "\n");
  } else if(e.keyCode === 13) {
      e.preventDefault();
      e.stopPropagation();
      $(this).parents('form').submit();      
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="#" method="post">
  <textarea></textarea>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个,它应该处理alt键:

&#13;
&#13;
function textSubmit() {
  $(".textarea").on("keydown", function(e) {
    if (e.keyCode === 13) {
      e.preventDefault();
      if (e.altKey === true) {
        $(this).val($(this).val() + "\n").focus();
      } else {
        $(this).parents('form').submit();
      }
    }
  });
}

textSubmit();
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea class="textarea" placeholder="Text"></textarea>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

你做错了是你没有调用你的函数。通过执行textSubmit()来调用你的函数或者将你函数中的代码块移到全局环境中。并且@Scott说使用'keyDown'而不是'keyPress'作为'keypress'只会传递按键产生的字符,只有在有按键时才会调用。

function textSubmit() {
       $("textarea").on("keydown",function(e) {
         if (e.altKey && e.keyCode === 13) {
            e.preventDefault();
            $(this).val($(this).val() + "\n");
        }
       else if (e.keyCode === 13) {
            e.preventDefault();
            $(this).parents('form').submit();
        }
    });
}
textSubmit();

这里我刚刚调用了该函数,它工作正常。