2

これは、ユーザーがメッセージを入力し、Enter キーを押して送信できるようにするためのものです。これにより、ボックスがクリアされ、ユーザーが新しいメッセージを入力できるようになります。問題は、Enter キーを押すこと (改行の作成) の標準的な結果が.empty() イベントのに発生することです....そのため、テキストが消えて改行に置き換えられますが、これは非常に望ましくありません。どうすればこれを回避できますか?

  $('#messagebox').keypress(function(event) {
        if (event.keyCode == '13') {
            send();
            $('#messagebox').empty();
        }
    }); 
4

3 に答える 3

4

keypressviaのデフォルト アクションを防ぐことができますevent.preventDefault()(またはreturn false、イベント ハンドラー関数 ( preventDefault+の jQuery 省略形) からstopPropagation):

実例| ソース:

HTML:

<p>Pressing Enter will clear the text area below:</p>
<textarea id="messagebox" rows="10" cols="50"></textarea>

JavaScript:

jQuery(function($) {

  $("#messagebox").focus().keypress(function(event) {
    if (event.keyCode === 13) {
      $(this).val("");
      event.preventDefault();
    }
  });

});

FWIW、特にフォームフィールドの値を設定するためのものなので、テキストエリアをクリアするのvalではなく、空の文字列を使用する可能性がありますが、うまくいっている場合は...emptyvalempty()

于 2012-05-14T05:44:30.120 に答える
2
$('#messagebox').keypress(function(event) {
    if (event.keyCode == '13') {
        event.preventDefault();
        send();
        $(this).empty();
    }
}); 
于 2012-05-14T05:46:02.523 に答える
1

デモ

$('#messagebox').on('keydown',function(e) {
    if (e.which === 13) {
        send();
        $(this).val('');
        e.preventDefault();
    }
}); 
于 2012-05-14T05:55:18.117 に答える