我试图阻止某些键输入到输入框中,但只有在按住键的同时shift按下该键才会:
$('selector').keydown(function(e) {
console.log(e.shiftKey);
if (e.shiftKey && e.which == 51) {
e.preventDefault();
alert('Disallowed');
}
});
Run Code Online (Sandbox Code Playgroud)
警报触发,但角色仍显示在文本框中.
我试图寻找解释为什么会发生这种情况,但无济于事,任何帮助都将不胜感激!
编辑
删除alert似乎解决问题(这似乎很奇怪),我真的很想知道为什么它以这种方式行事,它似乎没有任何意义.
谢谢
只需使用e.which而不是e.keyCode
$('#input').keydown(function(e) {
if (e.shiftKey && e.which == 51) {
e.preventDefault();
alert('Disallowed');
}
});
Run Code Online (Sandbox Code Playgroud)
因为,来自jQuery doc:
对于键或鼠标事件,此属性指示特定的键或按钮,这是pressed.The event.which财产归event.keyCode和 event.charCode.建议观看event.which键盘输入键. event.which也归按钮按压(鼠标按下和mouseupevents),报告1左按钮,2为中间,并为右3.使用event.which而不是event.button.
.keyup()$('#input').keyup(function(e) {
var val = $.trim( this.value );
if (e.shiftKey && e.which == 51) {
$(this).val(val.replace(/\#/,''));
}
});
Run Code Online (Sandbox Code Playgroud)
$(this).val( val.replace(/\u00A3/g, '') );
Run Code Online (Sandbox Code Playgroud)
完整代码
$('#input').keyup(function(e) {
var val = $.trim( this.value );
if (e.shiftKey && e.which == 51) {
$(this).val( val.replace(/\u00A3/g, '') );
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9506 次 |
| 最近记录: |