JQuery:.val('')在textarea中留下换行符

时间:2014-01-27 18:36:16

标签: jquery textarea

我正在开发一个AJAX聊天室。我的问题是,现在当我按下回车键时,偶尔会在textarea中留下一个空的换行符。到目前为止,我试图用.val(''),. text(''),. html('')和.empty()删除它,但它们都没有用。 preventDefault()命令似乎被触发了,因为我不经常得到这个错误但是当它确实发生时,它会一直被触发。到目前为止,我甚至都没有弄清楚导致这种变化的原因。有没有人知道我做错了什么?

这是代码。我正在抓住关键事件,

$("textarea[name='input']").keydown(function(event) {
    key = event.which;

    if(key == 13) {
        event.preventDefault();

        submitInput();
        }
    });

然后用

发送带有AJAX的输入句柄
function submitInput() {
    activeRoom = $(".tabs .active span").text(); 
    message = $("textarea[name='input']").val();

    message = message.trim();

    if(message != "") {
        if(message.charAt(0) == "/") {
            // Catch slash commands
            }
        else {
            $.ajax({
            url: "ajax/message_send.php",
            data: { nickname: nickname, room_name: activeRoom, message : message },
            async: false
            })
            .done(function(data) {
                getMessages(activeRoom);

                clearInput();
                });
            }
        }
    }

目前无法正常工作的功能如下所示。它非常简单,部分原因是因为我不知道要添加什么来使它工作。我有我的控制台日志向我显示函数被触发和完成的顺序,这是最后一次或直接在getMessages()之后。它应该工作......不是吗?

function clearInput() {
    // Empty input
    $("textarea[name='input']").val('');

    // Put input in focus
    $("textarea[name='input']").focus();
    }

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

message = message.replace(/ ^(\ n)/,'');

答案 1 :(得分:0)

我刚发现了这个问题。如果按Enter键太长时间,keydown事件会多次触发。将事件更改为按键,一切正常。