2011-05-26 69 views
3

我試圖讓一個事件觸發每當一個contenteditable div使用鍵控更改。不幸的是,它也能捕獲諸如用箭頭鍵移動插入符的東西。我只希望它能夠發現實際的變化。jquery keyup忽略不變字符

我看過this這個問題看起來很相似,但是那裏的解決方案並不適用於linebreaks這樣的東西。想法?

回答

1

一種方法是緩存處理程序外的長度,然後將textarea的當前長度與緩存的長度進行比較。如果他們不同,那麼你可以假設被按下的鍵被添加到textarea的內容。希望這可以幫助。

var textarea = $('textarea').get(0), 
    length = $(textarea).val().length; 

$(textarea).keyup(function() { 
    if($(this).val().length != length) { 

    //do something 


    //cache new length 
    length = $(this).val().length(); 
    } 
}); 
+0

$(本)。長度總是等於1應該是$(本)的.text()長度 – 2011-05-26 18:01:13

+0

我完全搞砸,多達 - 我忘了補充.VAL()我要去坐那個咖啡休息時間。 – 2011-05-26 18:02:06

+0

或val(),也可以。別擔心,我有很多這些時刻。 :O – 2011-05-26 18:03:24