我无法让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 = `
我正在尝试插入一些文字或符号而不是`
答案 0 :(得分:33)
聆听keyup
事件为时已晚,无法致电preventDefault
,请尝试改为倾听keypress
或keydown
。
$('input[type=text], textarea').on('keydown', function(event){
if (event.which == 192) {
console.log('192');
event.preventDefault();
}
});
请注意,jQuery规范化which
属性并且它是跨浏览器。
答案 1 :(得分:5)
.keyup()
没有默认行为;它会在按键触发默认行为后触发。请改用.keydown() or
。keypress()`。
答案 2 :(得分:2)
您正在使用JQuery来规范浏览器之间的差异,因此您只需要检查evt.which属性。请参阅JQuery文档:http://api.jquery.com/keyup/
正如其他人所说的那样 - 关键时刻已经来不及停止处理密钥了。请改用keydown或keypress。 http://api.jquery.com/category/events/keyboard-events/
答案 3 :(得分:0)
请参阅此处的工作示例http://jsfiddle.net/WGSvm/
在所有三个例子中,您都使用了
$(document).keyup(function (evt) { });
我想说使用特定的div id代替$(document).keyup(function (evt) { });
赞$("#DivIdName").keyup(function (evt) { });
并使用onkeypress
严格来说,因为如果你使用onkeyup
它已经执行了默认的打印任务或者它是什么。