2012-01-20 9 views
3

我有一個網頁,用戶應該能夠在任何地方輸入並跟蹤他們的輸入。一個問題是,Firefox中的斜線鍵「/,」是打開搜索的快捷方式。這對我來說是不可取的。我還沒有找到一種方法來捕獲搜索功能仍將輸入添加到我的跟蹤中。我在keypress上將輸入添加到堆棧。協調Firefox的斜槓處理和密鑰代碼

​​... preventDefault效果最好在Firefox中,但問題是,在Chrome中,keypress不火出於某種原因(不知道爲什麼會preventDefault停止,但它確實)。如果我可以自己將斜槓添加到輸入堆棧,這將是好的。但Firefox已經添加它,因爲keypress仍然被觸發。 stopPropagation也不會阻止keypress在FireFox中觸發。 $(document).keypress(e)中的​​方法也什麼都不做。

我遇到的另一個問題是「退格」應該從堆棧中刪除,但我使用String.fromCharCode(e.which)添加到堆棧並將數據添加到用戶可以看到的input type="text"字段。在Chrome中,此功能完美無缺,但在FireFox中,它添加了代表退格的字符,然後立即將其刪除,從而防止刪除另一個字符。在輸入中具有「退格」和「f5」等字符也是不希望的。有沒有辦法判斷fromCharCode的值是否對文本字段有效?我認爲,Chrome正在自動實現。

編輯:這可能會有所幫助,但FireFox顯然觸發keypress之前​​(Chrome做相反)在我的網頁上。這是不尋常的。

+0

我不知道斜線:我有一個noslash可變觸發捕捉斜線在FF中,謝謝! – cambraca

+0

@cambraca至少這個問題對某些事情有好處:P –

+0

在keydown之前,Firefox觸發'keypress'並不是真的。請嘗試以下測試頁面,例如:http://unixpapa.com/js/testkey.html –

回答

1

解決這個有點kludge。用於搜索

else if (e.which == '191' && !noslash) { 
    e.preventDefault(); 
    $typing.val($typing.val() + '/'); 
} 

至於問題的第二部分,我只是拒絕任何字符

[^-a-z0-9`[email protected]#$%^&*()_+=\\|/'";:,<.>?\[\]{}]