【问题标题】:JQuery: .val('') leaves line break in textareaJQuery:.val('') 在 textarea 中留下换行符
【发布时间】:2014-01-27 18:36:16
【问题描述】:

我正在开发一个 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();
    }

【问题讨论】:

    标签: jquery textarea


    【解决方案1】:

    你试过了吗?

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

    【讨论】:

    • 我将其运行为: textarea = $("textarea[name='input']"); textarea.val(''); textarea.val(textarea.val().replace(/^(\n)/,''));没有效果。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 1970-01-01
      • 2017-05-17
      • 1970-01-01
      相关资源
      最近更新 更多