Подтвердить что ты не робот

Удалить разрыв строки из текстового поля

У меня есть текстовое поле:

<textarea tabindex="1" maxlength='2000' id="area"></textarea>

Я смотрю эту текстовую область с помощью jquery:

$("#area").keypress(function (e) {
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace("\n", "");
    if (!util.isBlank(msg))
    {
        send(msg);
        $("#area").val("");
    }
});

send() отправляет сообщение серверу, если был нажат ключ возврата, и если сообщение не пустое или содержит только пробелы строки.

Проблема: после отправки сообщения текстовое поле не очищается. При загрузке первой страницы текстовое поле пуст. Когда сообщение было отправлено, в текстовом поле есть одна пустая строка, и я не знаю, как избавиться от нее.

4b9b3361

Ответ 1

Проблема заключается в том, что нажатие клавиши Enter не подавляется и выполняет обычное поведение браузера (т.е. добавляет разрыв строки). Добавьте return false в конец вашего обработчика нажатия клавиш, чтобы предотвратить это.

$("#area").keypress(function (e) {
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace(/\n/g, "");
    if (!util.isBlank(msg))
    {
        send(msg);
        $("#area").val("");
    }
    return false;
});

Ответ 2

Томас, e.preventDefault(); необходимо будет обернуть внутри условного применения, применяя его только к ключу ввода.

// Restrict ENTER.
if (e.keyCode == '13') { e.preventDefault(); }

Вся функция будет выглядеть примерно так (с комментариями):

// Key Press Listener Attachment for #area.
$("#area").keypress( function (event) {

    // If the key code is not associated with the ENTER key...
    if (event.keyCode != 13) {

        // ...exit the function.
        return false;

    } else {

        // Otherwise prevent the default event.
        event.preventDefault();

        // Get the message value, stripping any newline characters.
        var msg = $("#area").val().replace("\n", "");

        // If the message is not blank now...
        if (!util.isBlank(msg)) {

            // ...send the message.
            send(msg);

            // Clear the text area.
            $("#area").val("");

        }

    }

} );

Ответ 3

Вы хотите использовать функцию event.preventDefault(), чтобы предотвратить действие события по умолчанию, в этом случае добавляя символ ввода:

$("#area").keypress(function (e) {
    e.preventDefault();
    if (e.keyCode != 13) return;
    var msg = $("#area").val().replace("\n", "");
    if (!util.isBlank(msg))
    {
        send(msg);
        $("#area").val("");
    }
});