Удалить разрыв строки из текстового поля
У меня есть текстовое поле:
<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() отправляет сообщение серверу, если был нажат ключ возврата, и если сообщение не пустое или содержит только пробелы строки.
Проблема: после отправки сообщения текстовое поле не очищается.
При загрузке первой страницы текстовое поле пуст. Когда сообщение было отправлено, в текстовом поле есть одна пустая строка, и я не знаю, как избавиться от нее.
Ответы
Ответ 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("");
}
});