0

我有一个文本区域,每次输入时,如果有东西写,我希望它变成空白。但我的问题是;在第一次输入它换行符,然后你继续从第二行开始写。它只发生在第一次进入。清空textarea没有问题,你从第二行继续写,就是问题所在。

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,因此您只需调用preventDefault事件,以便在调用清除文本区域的函数后它不会输入换行符。return false如果上面的代码内联在 HTML 中,那么单独使用就足够了,这并不是真正推荐的。请参阅下面的更新解决方案:


对于不显眼和向后兼容,我建议使用 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功能。这可以防止执行键的默认操作(在这种情况下为换行符)。

您可能还想包含一些代码来处理 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;
    }
}
于 2012-12-30T20:58:17.257 回答