web-dev-qa-db-ja.com

フォームを送信する代わりに、改行文字をテキストエリアに追加します

テキスト領域のあるフォームがあり、Enterキーを押すとフォームが送信されます。フォーム送信の代わりに改行文字を追加する方法を教えてください。

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

JSFiddleデモ

28

これは役立つはずです

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

それが価値があるもののために、私はOS XでChromeを使用しています Enter\nをテキストエリアに挿入して、デフォルトでnotフォームを送信します。

2
maček
$(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動作します。

2
Abhinav Chauhan

あなたはこのコードを試すことができます:

$(document).ready(function() {
  $("textarea").keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});
1
$(document).ready(function() {
  $('textarea').keydown(function(event){
    if (event.keyCode == 13) {
      event.preventDefault();
      var s = $(this).val();
      $(this).val(s+"\n");
    }
  });
});
1
Rusty Fernandez

以前の回答は、textareaの現在の値の分割を処理せず、改行文字を追加するだけです。以下は、イベントがフォームにバブリングするのを防ぎ、 'enter'での典型的なtextarea動作を許可します。

$('textarea').keydown(function(event) {
  if (event.keyCode === 13) {
    event.stopPropagation();
  }
});
1
David Rice

これは私のために働いた

$(document).keypress(function(e) {
if(e.which == 13) {
    if(document.activeElement.tagName != "TEXTAREA") {
        e.preventDefault();
    };
  }
})
1