14

我有一个带有文本区域的表单,然后按 Enter 键提交我的表单。我怎样才能使它添加一个换行符而不是表单提交。

4

7 回答 7

30
$('textarea').keypress(function(event) {
   if (event.which == 13) {
      event.stopPropagation();
   }
});​

JSFiddle 演示

于 2012-12-24T10:55:08.947 回答
2

你可以试试这段代码:

$(document).ready(function() {
  $("textarea").keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});
于 2012-12-24T10:52:18.193 回答
2

这应该有帮助

$('#myProblematicForm textarea').keypress(function(event) {
  if (event.which == 13) {
    event.preventDefault();
    this.value = this.value + "\n";
  }
});

对于它的价值,我在 OS X 上使用 Chrome 并为我在 textarea 中Enter插入 a并且默认情况下提交表单。\n

于 2012-12-24T10:52:36.710 回答
2
$(document).ready(function(){
$("#text").keypress(function(event) {   
   if (event.which == 13) { 
      var s = $(this).val();
      $(this).val(s+"\n");  //\t for tab
   }
});      
});

这可以通过我上面给出的 jquery 代码来完成。必须注意,上面的脚本在HTML输入字段代码之前编写时需要使用ready函数,而在输入字段代码之后编写则不需要。如果它不起作用,请尝试使用\t代替\ n 它会起作用的。

于 2017-06-10T11:59:54.940 回答
2

以前的答案不处理拆分 textarea 的当前值,而只是附加一个换行符。以下阻止事件冒泡到表单,并且仍然允许“输入”上的典型文本区域行为。

$('textarea').keydown(function(event) {
  if (event.keyCode === 13) {
    event.stopPropagation();
  }
});
于 2017-01-25T20:45:05.190 回答
1
$(document).ready(function() {
  $('textarea').keydown(function(event){
    if (event.keyCode == 13) {
      event.preventDefault();
      var s = $(this).val();
      $(this).val(s+"\n");
    }
  });
});
于 2014-04-04T08:52:42.503 回答
1

这对我有用

$(document).keypress(function(e) {
if(e.which == 13) {
    if(document.activeElement.tagName != "TEXTAREA") {
        e.preventDefault();
    };
  }
})
于 2017-02-06T15:21:46.627 回答