0

テキストエリアがあり、入力するたびに、何かが書き込まれた場合は空白にします。しかし、私の問題は; 最初の入力で改行し、2行目から書き込みを続けます。それは最初の入力でのみ発生します。textareaを空にしても問題はありません。問題は、2行目から書き込みを続けるだけです。

onkeydown= if(event.keyCode == 13){

    sendMessage();
}

function sendMessage(user){

    var message = $('#textarea').val();
    $('#textarea').val('');
}
4

3 に答える 3

3
if(event.keyCode == 13) {
    sendMessage();
    if (event.preventDefault) event.preventDefault();
    return false;
}

keydown文字がに入力される前に発生するため、テキスト領域をクリアする関数を呼び出した後に改行が入力されないように、イベントtextareaを呼び出す必要があります。上記のコードがHTMLでインラインである場合は、単独でも十分ですが、これは実際には推奨されません。以下の更新されたソリューションを参照してください。preventDefaultreturn false


目立たず、下位互換性を保つために、jQueryを使用してすべてを実行することをお勧めします。

$('#textarea_ID').keydown(function(e) {
    if (e.which == 13) {
        e.preventDefault();
        var message = $(this).val();
        $(this).val('');
        //rest of your function using `message` here
    }
});

フィドル

于 2012-12-30T20:55:06.940 に答える
0

jQueryではwhich、コードのプロパティを使用します。次に、falseを返しますe.preventDefault();

var field = $('.classname');

field.keydown(function(e){
    if(e.which==13){
        sendMessage();
        e.preventDefault();
    }


});
于 2012-12-30T20:57:16.960 に答える
0

関数に追加return false;するだけkeydownです。これにより、キーのデフォルトのアクション(この場合は改行)が実行されなくなります。

InternetExplorerのキーコードの取得方法を処理するコードを含めることもできます。新しい関数は次のようになります。

onkeydown = function (e) {
    // Gets keycode cross browser
    e = window.event ? window.event : e;
    var keycode = e.keyCode !== null ? e.keyCode : e.charCode;

    // Checks if it was the enter key that was pressed (enter = keycode 13)
    if (keycode === 13) {
        // Calls function to do stuff
        sendMessage();
        // Cancels the default action of the (enter) key
        return false;
    }
}
于 2012-12-30T20:58:17.257 に答える