如何让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 相关文章推荐
JavaScript.The.Good.Parts阅读笔记(二)作用域&amp;闭包&amp;减缓全局空间污染
Nov 16 Javascript
JS实现标签页效果(配合css)
Apr 03 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
15款jQuery分布引导插件分享
Feb 04 Javascript
实例详解jQuery结合GridView控件的使用方法
Jan 04 Javascript
AngularJS 模块详解及简单实例
Jul 28 Javascript
如何解决hover在ie6中的兼容性问题
Dec 15 Javascript
解析vue中的$mount
Dec 21 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
json字符串传到前台input的方法
Aug 06 Javascript
ES6实现图片切换特效代码
Jan 14 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
Feb 13 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中require和require_once的区别说明
2014/02/27 PHP
PHP学习笔记(一) 简单了解PHP
2014/08/04 PHP
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
layui递归实现动态左侧菜单
2019/07/26 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
使用webpack和rollup打包组件库的方法
2021/02/25 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python迭代和迭代器详解
2016/11/10 Python
python文本数据相似度的度量
2018/03/12 Python
python连接mongodb密码认证实例
2018/10/16 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
python取余运算符知识点详解
2019/06/27 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
“四风”查摆问题自我剖析材料
2014/09/27 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
先进党支部申报材料
2014/12/24 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
师范生教育见习总结
2015/06/23 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
JPA如何使用entityManager执行SQL并指定返回类型
2021/06/15 Java/Android