Разрыв строки при нажатии
У меня есть текстовое поле, и при каждом вводе я хочу, чтобы оно пусто, если что-то написано. но моя проблема в том, на первой введите его разрывы строк, а вы продолжите писать со второй строки. это происходит только при первом входе. Нет проблем с очисткой текстовой области, вы просто продолжаете писать со второй строки, что является проблемой.
onkeydown= if(event.keyCode == 13){
sendMessage();
}
function sendMessage(user){
var message = $('#textarea').val();
$('#textarea').val('');
}
3 ответа
if(event.keyCode == 13) {
sendMessage();
if (event.preventDefault) event.preventDefault();
return false;
}
keydown
происходит до того, как персонаж введен в textarea
так что вам просто нужно позвонить preventDefault
на событие, чтобы оно не вводило разрыв строки после того, как вы вызвали свою функцию, которая очищает текстовую область. return false
Одного должно быть достаточно, если код выше встроен в HTML, что на самом деле не рекомендуется. Смотрите обновленное решение ниже:
Для ненавязчивости и back-compat я бы порекомендовал делать все это с помощью 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
}
});
Просто добавь return false;
на ваш keydown
функция. Это предотвращает выполнение действия ключа по умолчанию (в данном случае - новой строки).
Вы также можете включить код для обработки способов получения ключевых кодов в Internet Explorer. Ваша новая функция будет:
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;
}
}
В jQuery используйте which
свойство для кода. Затем верните false с e.preventDefault();
var field = $('.classname');
field.keydown(function(e){
if(e.which==13){
sendMessage();
e.preventDefault();
}
});