如何让div span等元素能响应键盘事件操作指南


Posted in Javascript onNovember 13, 2012

在我这几天的工作中遇到了一个问题,google了一下找到了解决方案,不过是英文的,我简单翻译下让更多的人能看懂
译文如下
我有一个可编辑的div,并且在DIV里面还有一个可编辑的span,我想要让span能响应键盘事件,
这里是测试JS代码:

$(function() 
{ 
$('#someid').keypress(function(event){alert('test');}); 
});

这里是测试html代码
<div id="mydiv" contenteditable="true"> 
editable follows:<span id="someid" contenteditable="true">Some TEXT</span> 
</div>

如果你在浏览器中测试,你会看见,当你在Some TEXT上press key时,没有‘test'弹出框弹出,我知道这个问题的发生原因是因为事件是从span的父节点div发出来的,所以span没有触发到事件,当然也是因为span没有焦点造成的,所以我想要谁帮助我找出解决方案。
最终终于有好心人帮助解决了这个问题
关于你的问题的解决方案代码我已经提交到了http://jsfiddle.net/gaby/TwgkC/3/ 并且工作正常
在FF, Opera, Chrome, Safari, IE8 ..中测试
#someid需要获得焦点才能触发keypress,如果你想要你的代码获得焦点在元素创建后立即使用.focus()方法
function AppendSpan() 
{ 
$('#mydiv').append('<span id="someid" contenteditable="true">Some TExt</span>'); 
//Then I want to handle the keypress event on the inserted span 
$('#someid').keypress(function(event){ 
//do something here 
alert(this.id); 
}).focus();// bring focus to the element once you append it.. 
}

追加:
两个方法来触发事件,(事实上需要使用contenteditable属性),不确定你是否能接受这种情况
1、包裹一个可编辑span在另一个的外层,并且设置它的属性contenteditable="false"
demo js:
function AppendSpan() 
{ 
$('#mydiv').append('<span contenteditable="false"><span id="someid" contenteditable="true">Some TExt</span></span>'); 
//Then I want to handle the keypress event on the inserted span 
$('#someid').keypress(function(event){alert('test');}); 
} 
$(function() 
{ 
$('#mydiv').keypress(function(event){AppendSpan();}); 
});

demo html:
<div id="mydiv" contenteditable="true"> 
editable follows: 
</div>

2、让你的#mydiv处在非编辑状态,当你需要触发span的键盘事件时
demo js:
function AppendSpan() 
{ 
$('#mydiv').removeAttr('contenteditable').append('<span id="someid" contenteditable="true">Some TExt</span>'); 
//Then I want to handle the keypress event on the inserted span 
$('#someid').keypress(function(event){alert('test');}); 
} 
$(function() 
{ 
$('#mydiv').keypress(function(event){AppendSpan();}); 
});

demo html:
<div id="mydiv" contenteditable="true"> 
editable follows: 
</div>
Javascript 相关文章推荐
JS 字符串连接[性能比较]
May 10 Javascript
zShowBox 图片放大展示jquery版 兼容性
Sep 24 Javascript
javascript题目,重写函数让其无限相加
Feb 15 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
Jul 09 Javascript
浅析vue数据绑定
Jan 17 Javascript
BootStrap的两种模态框方式
May 10 Javascript
Angular2中如何使用ngx-translate进行国际化
May 21 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
Nov 17 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
Dec 28 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
node创建Vue项目步骤详解
Mar 06 Javascript
JavaScript实现一键复制内容剪贴板
Jul 23 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 #Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
Nov 13 #Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 #Javascript
Javascript开发之三数组对象实例介绍
Nov 12 #Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 #Javascript
php对mongodb的扩展(小试牛刀)
Nov 11 #Javascript
php对mongodb的扩展(初识如故)
Nov 11 #Javascript
You might like
劣质的PHP代码简化
2010/02/08 PHP
php防攻击代码升级版
2010/12/29 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
学习PHP session的传递方式
2016/06/15 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
Javascript Global对象
2009/08/13 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
datagrid框架的删除添加与修改
2013/04/08 Javascript
js控制input输入字符解析
2013/12/27 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
微信小程序swiper禁止用户手动滑动代码实例
2019/08/23 Javascript
分享Angular http interceptors 拦截器使用(推荐)
2019/11/10 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
详细介绍Python中的偏函数
2015/04/27 Python
Python简单定义与使用字典dict的方法示例
2017/07/25 Python
python实现最长公共子序列
2018/05/22 Python
python列表推导式操作解析
2019/11/26 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
中国制造网:Made-in-China.com
2019/10/25 全球购物
城市轨道交通工程职业规划书范文
2014/01/18 职场文书
处罚决定书范文
2015/06/24 职场文书
初中军训感想
2015/08/07 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis