JS屏蔽页面某些按键的响应
2015-09-08 16:20
429 查看
经常碰到这样的问题,页面上有个input控件,但是readonly属性为readonly,也就是只读的,当光标选中该控件时,无法输入任何内容,但是输入的按键其实被页面获取到了,会造成一个问题:
当在该控件输入回退按键(ESC)时,会导致页面直接返回上一个页面,因为页面响应了ESC的按键事件
因此,需要在页面加载时进行屏蔽(仅屏蔽当焦点在这些只读输入控件的时候的ESC按键事件)
代码如下:
<html>
<head>
<title>测试页面</title>
<script language="javascript">
document.onkeydown=function(){
alert(window.event.keyCode);
if(window.event.keyCode == 8){
alert(window.event.srcElement.tagName);
if(event.srcElement.name == "inputbox"){
alert("!");
window.event.keyCode = 0;
event.returnValue = false;
}
}
}
</script>
</head>
<body>
<input name="inputbox" id="inputbox" readonly="readonly"/>
</body>
</html>
当然,这里的判断条件如果改为下面这种,屏蔽所有只读输入栏的就更好了
if (
(event.keyCode == 8)
&& ((event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password")
|| event.srcElement.readOnly == true
)
当在该控件输入回退按键(ESC)时,会导致页面直接返回上一个页面,因为页面响应了ESC的按键事件
因此,需要在页面加载时进行屏蔽(仅屏蔽当焦点在这些只读输入控件的时候的ESC按键事件)
代码如下:
<html>
<head>
<title>测试页面</title>
<script language="javascript">
document.onkeydown=function(){
alert(window.event.keyCode);
if(window.event.keyCode == 8){
alert(window.event.srcElement.tagName);
if(event.srcElement.name == "inputbox"){
alert("!");
window.event.keyCode = 0;
event.returnValue = false;
}
}
}
</script>
</head>
<body>
<input name="inputbox" id="inputbox" readonly="readonly"/>
</body>
</html>
当然,这里的判断条件如果改为下面这种,屏蔽所有只读输入栏的就更好了
if (
(event.keyCode == 8)
&& ((event.srcElement.type != "text" && event.srcElement.type != "textarea" && event.srcElement.type != "password")
|| event.srcElement.readOnly == true
)
相关文章推荐
- JSON解析例子
- JS中如何实现button响应的切换?
- ExtJs的事件机制Event
- Extjs继承机制和窗体创建
- Ext JS框架入门
- JS中生成与解析JSON
- js ==与===区别(两个等号与三个等号)
- ajax-json
- JSP学习笔记(九):servlet的单线程模式
- javascript 原型继承介绍
- jsrender页面数据的展示
- [转]html 移动互联网终端的javascript touch事件,touchstart, touchend, touchmove
- JavaScript 设计模式之外观模式
- 巧用jsp页面用表单实现动态打印功能
- 服务端返回可执行js格式要求
- javascript中注册和移除事件的4种方式
- JSON转换工具:fastjson与jackson
- 新应用的知识整理-通过JSON格式数据与服务器通信
- 【JavaScript】---闭包
- 利用ajax的getJSON读取数据时注意的问题