解决ExtJS中textfield回格键导致页面跳转问题
"该资源主要针对JSP页面中使用ExtJS库创建的文本框(textfield)遇到的一个问题,即用户在文本框内按回退键(Backspace)时,页面会意外地跳转到前一个页面。为了解决这个问题,提供了两种JavaScript解决方案来阻止这种不期望的行为。" 在Web开发中,尤其是使用ExtJS这样的富客户端框架时,用户体验的细节处理至关重要。在描述的问题中,当用户在不可编辑的文本框上按下Backspace键时,浏览器默认行为是返回上一页,而不是删除文本框内的字符。这显然不符合用户的预期,因此需要通过编程手段来修正。 第一种解决方案是使用Ext.KeyMap,它允许对键盘事件进行映射和处理。这段代码创建了一个新的KeyMap实例,监听整个文档,当按下Backspace键时,检查触发事件的元素类型。如果元素不是文本框(text)、多行文本区域(textarea)或密码输入框(password),或者元素是只读的,那么就阻止事件的默认行为(即防止页面跳转)。 ```javascript var key = new Ext.KeyMap(document, { key: 8, // Backspace 的键码 fn: function (obj, e) { var type = e.target.type; var readOnly = e.target.readOnly; if (type != 'text' && type != 'textarea' && type != 'password') { e.stopEvent(); // 阻止事件传播 } else if (readOnly) { e.stopEvent(); // 阻止事件传播 } }, scope: this }); ``` 第二种方法是通过监听全局的keydown事件,同样检查Backspace键被按下时的目标元素类型。如果目标元素是可编辑的文本输入元素,则允许Backspace键的行为;否则,阻止这个事件,确保不会触发页面跳转。 ```javascript // JavaScript 实现方式 function document.onkeydown() { if ((event.keyCode == 8)) { // 检查Backspace键 if (window.event.srcElement.tagName.toUpperCase() != "INPUT" && window.event.srcElement.tagName.toUpperCase() != "TEXTAREA" && window.event.srcElement.tagName.toUpperCase() != "TEXT") { event.keyCode = 0; // 阻止默认行为 event.returnValue = false; } } } ``` 这两种方法都可以有效地解决文本框在不可编辑状态下按Backspace键导致的页面跳转问题。开发者可以根据实际项目需求选择合适的方式进行实现,提升用户在交互过程中的体验。
var key = new Ext.KeyMap(document,{
key: 8,
fn: function(obj,e){
var type = e.target.type;
var readonly = e.target.readOnly;
if(type != 'text' && type != 'textarea' && type != 'password'){
//e.preventDefault();
e.stopEvent();
}
else if(readonly){
//e.preventDefault();
e.stopEvent();
}
},
scope: this
});
//方法二
Ext.getDoc().on('keydown',function(e){
if(e.getKey() == 8 && e.getTarget().type =='text' && !e.getTarget().readOnly){
}else if(e.getKey() == 8 && e.getTarget().type =='textarea' && !e.getTarget().readOnly){
}else if(e.getKey() == 8){
e.preventDefault();
}
});
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦