2014-01-27 283 views
0

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

这是代码。我赶上的关键事件有,

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

回答

0

你试过这个吗?

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

+0

我跑那个: \t textarea = $(“textarea [name ='input']”); \t textarea.val(''); (textarea.val()。replace(/ ^(\ n)/,'')); 没有效果。 – Ami

0

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

相关问题