Разрыв строки при нажатии

У меня есть текстовое поле, и при каждом вводе я хочу, чтобы оно пусто, если что-то написано. но моя проблема в том, на первой введите его разрывы строк, а вы продолжите писать со второй строки. это происходит только при первом входе. Нет проблем с очисткой текстовой области, вы просто продолжаете писать со второй строки, что является проблемой.

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();
    }


});
Другие вопросы по тегам