2011-03-29 34 views
2

我想知道是否有辦法獲取keydown或keypress事件上的當前值。爲了更好地定義「當前值」,我的意思是,由此得到textarea的值,包括「剛剛插入的」字符。默認情況下,這些事件的值不會改變。如果這是不可能的,我想知道是否有一個跨瀏覽器的方式來獲得剛剛插入我按的鍵的值(我不需要鍵碼,因爲例如,這沒有定義,假設如果輸入的字符是大寫或小寫,我輸入一個字符)。在keypress或keydown上獲取插入的字符<textarea>

回答

0

您必須等待keyup事件在實際值更改之前觸發。否則,對於keydown或keypress,你必須映射事件上的字符代碼(除非你使用一些JS庫,比如標準化的jQuery),並確定遊標位置並修改值辦法。這可能會有點棘手,尤其是在瀏覽器支持方面,除非您使用JS庫來執行此操作。

+0

是。我知道。實際上這就是爲什麼我問了一個跨瀏覽器的方式來做到這一點,因爲並非所有的瀏覽器都在keydown或keypress上捕獲字符。 – Paris 2011-03-29 09:58:31

0

我寫了一個模塊,它分別將keypress,​​和keyup事件轉換爲字符和鍵。 https://github.com/fresheneesz/keysight

實施例:

textarea.addEventListener("keydown", function(event) { 
    var character = keysight(event).char 
    if(character === 'w') { 
     console.log("got lower case w") 
    } else if(character === 'W') { 
     console.log("got upper case w") 
    } 
}) 
相關問題