解决ExtJS中textfield回格键导致页面跳转问题
需积分: 10 151 浏览量
更新于2024-09-09
收藏 1KB TXT 举报
"该资源主要针对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键导致的页面跳转问题。开发者可以根据实际项目需求选择合适的方式进行实现,提升用户在交互过程中的体验。
2014-08-16 上传
2009-12-16 上传
2020-09-01 上传
2021-01-19 上传
2020-12-10 上传
2022-01-21 上传
2015-11-24 上传
2020-12-04 上传
rennvercaicai
- 粉丝: 0
- 资源: 3
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫