2012-12-27 160 views
9

我無法獲得preventDefault()的工作。preventupfault()on keyup event not working

這裏有一些不同的代碼的變化我都試過:

第一:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     return false; 
    } 
}); 

二:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
    } 
}); 

三:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
     return false; 
    } 
}); 

只有警報的作品。
一切適用於Opera,但不適用於Chrome和IE 也試過​​和keypress。 對keypress腳本不起作用。 $('#thetext').keydown(function(evt){});既沒有這個功能。
這裏是整個代碼:http://bbullett.tk/test/kakey.html

Key 192 = ` 

我試圖插入,而不是`

+1

請縮進您的代碼以使其可讀。謝謝!哪個鍵是'192'?按下此鍵時的默認行爲是什麼? –

+0

你想做什麼?什麼會阻止keyup事件完成? – Guffa

+0

我試圖插入一些符號而不是' –

回答

26

一些文字或符號聽keyup事件是爲時已晚打電話preventDefault,儘量聽keypress或​​代替。

$('input[type=text], textarea').on('keydown', function(event){ 
    if (event.which == 192) { 
     console.log('192'); 
     event.preventDefault(); 
    } 
}); 

注意,jQuery的正常化which財產,它是跨瀏覽器。

http://jsfiddle.net/763ys/

+0

沒有改變:S –

+0

@BbullettOmsarashvili它適用於我Firefox瀏覽器。 – undefined

+0

但不在鉻上。 –

0

看到這裏http://jsfiddle.net/WGSvm/

工作示例您使用

$(document).keyup(function (evt) { }); 

我要說的使用,而不是特定的div ID的所有三個例子$(document).keyup(function (evt) { });

$("#DivIdName").keyup(function (evt) { }); 並嚴格使用onkeypress ,因爲如果您使用onkeyup 它已經執行了它的默認打印任務或任何它。

2

您正在使用JQuery,它可以規範瀏覽器之間的差異,因此您只需要檢查evt.which屬性。請參閱JQuery文檔:http://api.jquery.com/keyup/

正如其他人所說 - keyup爲時已晚,無法停止密鑰的處理。改用keydown或keypress。 http://api.jquery.com/category/events/keyboard-events/

+0

任何想法如何在Android瀏覽器上使用keydown?如果他們不能在所有平臺上工作,Keydown和keypress並不是非常有用... – JohnG