2012-01-19 17 views
21

私は明らかな理由からテキストの代わりにテキストエリアを使用するチャットをしています。このため、メンバーがENTERを押すたびに、メッセージを送信する代わりに新しい行が表示されます。 私はこれを変更したいので、ENTER =ヒットするたびにメッセージを送信し、次にカーソルを次のメッセージ入力のためにtextareaに戻します。 私はこのサイトで見つかったさまざまなコードを試しましたが、ほとんどの作業がなく、何かをしたような人はページをリフレッシュしていました。テキストエリアに「Enter」キーを作成する方法フォームを送信

マイコード:

<form name="message" action=""> 
    <textarea name="usermsg" autocomplete="off" type="text" id="usermsg" rows="4" cols="30" style="width: 450px; margin-left: 25px;"> 
    </textarea> 
    <br/> 

    <p style="margin-left: 420px;"><input name="submitmsg" type="submit" id="submitmsg" value="Send" /></p> 
</form> 

はお時間をありがとうございました。

+1

どのプログラミング言語を使用すると、?HTMLについて話していることに注意してみてください? – gorootde

+0

PHPはプログラミング言語です。 – Ingrid

+1

プログラミング言語 –

答えて

15

私はjQueryとkeypress機能とwhichプロパティでそれを行う方法の一例でjsfiddleを作成している:あなたがこれ以上を求めている正確に何http://jsfiddle.net/GcdUE/

わからないので、更なるご質問をご指定ください可能なら。

$(function() { 
    $("#usermsg").keypress(function (e) { 
     if(e.which == 13) { 
      //submit form via ajax, this is not JS but server side scripting so not showing here 
      $("#chatbox").append($(this).val() + "<br/>"); 
      $(this).val(""); 
      e.preventDefault(); 
     } 
    }); 
}); 
+0

Anders、これは動作しますが、メッセージは1秒間しか残らず、チャットから消えてしまいます。 – Ingrid

+0

私のチャットに合ったものを編集しました。あなたのコードは完璧に動作しました。ありがとうございました。 – Ingrid

+0

うれしい私は助けることができます。 :) –

5

さて、あなたはそれが簡単なあなたの入力フィールド上のリスナーになりますjqueryのを使用していたと仮定:

<script type="text/javascript"> 
$(document).ready(function(){ 
    $('#usermsg').keypress(function(e){ 
     if(e.which == 13){ 
      // submit via ajax or 
      $('form').submit(); 
     } 
    }); 
}); 
</script> 

あなたのhtml頭では、これを追加します:<前に、あなたのフッターに

/ボディ>

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type="text/javascript" charset="utf-8"></script> 

jsやjqueryが質問から外れている場合は、おそらくそれを除外するように質問を更新してください。

+0

私はそれを試してみましたが、うまくいかないか、単にそれを正しく行う方法がわかりません。コードから何かを変更する必要がありますか? – Ingrid

+0

私は自分の答えを更新しました。申し訳ありませんが、あなたのIDをテキストエリアに追加するのを忘れました。 –

+0

さて、これは応答があったようですが、正しく挿入したようですが、リフレッシュのような空白のページが表示されます。 – Ingrid

-2

<textarea>の代わりに<input type=text>を使用してください。それから、はるかに良いチャンスがあります。 textareaでは、Enterキーを押すとテキストが改行され、テキストは提出されません。

+0

はい、私は知っていましたが、それはテキストではありましたが、長いコメント(このコメントボックスのようなもの)が1行しかないチャットでは問題になります。答える時間をとっていただきありがとうございます。 – Ingrid

19

この(あなたが提出行くENTERますが、SHIFT +改行を行ってEnterキーを押したとき。

$("#textareaId").keypress(function (e) { 
    if(e.which == 13 && !e.shiftKey) {   
     $(this).closest("form").submit(); 
     e.preventDefault(); 
     return false; 
    } 
}); 
+0

あなたは神様ありがとうございます! –

関連する問題