twi*_*wig 37 javascript jquery keypress
我尝试搜索但不确定要查找的术语.
我使用jQuery,并想在一个文本框,使用按键事件,但阻止所有非打印字符(即Enter,ESC,箭头键backspace,tab,ctrl,insert,F1- F12,等)从触发事件.
有没有一种简单的方法来确定它是否可打印?
And*_*ass 28
<script>
$("input").keypress(function (e) {
if (e.which !== 0 &&
!e.ctrlKey && !e.metaKey && !e.altKey) {
alert(String.fromCharCode(e.which));
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
似乎与jQuery 1.4.2,FF,IE,Chrome一起工作得很好.
要深入研究JS键盘事件处理的混乱,请参阅: JavaScript Madness:键盘事件
更新为根据Daniel的评论过滤ctrl,meta和alt组合键.
Dan*_*iel 27
此问题的选定答案尚未完成.它不处理与修改键(例如CTRL- A)一起按下字符键的情况.
例如,尝试输入CTRL- A使用带有以下代码的firefox.目前的答案将其视为一个角色:
HTML:
<input placeholder="Try typing CTRL-A in Firefox" style="width: 200px"/>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$("input").keypress(function (e) {
if (e.which !== 0) {
alert(String.fromCharCode(e.which));
}
});
Run Code Online (Sandbox Code Playgroud)
注意:如果使用某些浏览器(例如Chrome),则不会触发警报,因为它们不会针对非字符输入触发按键事件.
更好的解决方案可能是:
HTML:
<input placeholder="Try typing CTRL-A in Firefox" style="width: 200px"/>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$("input").keypress(function (e) {
if (e.which !== 0 &&
!e.ctrlKey && !e.metaKey && !e.altKey
) {
alert(String.fromCharCode(e.which));
}
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下,仅在A按下时才触发警报,而不是CTRL- A对于所有浏览器.
归档时间: |
|
查看次数: |
31587 次 |
最近记录: |