簡體   English   中英

關鍵字事件的preventDefault()無法正常工作

[英]preventDefault() on keyup event not working

我無法使preventDefault()工作。

以下是我嘗試過的一些不同的代碼變體:

第一:

$(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也嘗試過keydownkeypress keypress腳本上不起作用。 $('#thetext').keydown(function(evt){}); 既不是這樣的。
這是完整的代碼: http//bbullett.tk/test/kakey.html

Key 192 = `

我試圖插入一些文字或符號而不是`

收聽keyup事件為時已晚,無法調用preventDefault ,請嘗試收聽keypresskeydown

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

請注意,jQuery規范化了which屬性,並且它是跨瀏覽器的。

http://jsfiddle.net/763ys/

.keyup()沒有默認行為; 它會在按鍵觸發默認行為后觸發。 請改用.keydown() or .keypress()。

來源: http //api.jquery.com/category/events/keyboard-events/

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

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

看這里的工作示例http://jsfiddle.net/WGSvm/

在您使用的所有三個示例中

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

我會說使用特定的div id而不是$(document).keyup(function (evt) { });

比如$("#DivIdName").keyup(function (evt) { }); 並嚴格使用onkeypress ,因為如果你使用onkeyup它已經執行了默認的打印任務或者它是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM