[英]event.preventDefault() or event.stopPropagation() not working with keyUp event
[英]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也嘗試過keydown
和keypress
。 在keypress
腳本上不起作用。 $('#thetext').keydown(function(evt){});
既不是這樣的。
這是完整的代碼: http : //bbullett.tk/test/kakey.html
Key 192 = `
我試圖插入一些文字或符號而不是`
收聽keyup
事件為時已晚,無法調用preventDefault
,請嘗試收聽keypress
或keydown
。
$('input[type=text], textarea').on('keydown', function(event){
if (event.which == 192) {
console.log('192');
event.preventDefault();
}
});
請注意,jQuery規范化了which
屬性,並且它是跨瀏覽器的。
.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.