如何让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键盘事件的keyCode
Jul 29 Javascript
15个常用的jquery代码片段
Dec 19 Javascript
jQuery自动完成插件completer附源码下载
Jan 04 Javascript
基于bootstrap插件实现autocomplete自动完成表单
May 07 Javascript
ES6所改良的javascript“缺陷”问题
Aug 23 Javascript
JS实现页面载入时随机显示图片效果
Sep 07 Javascript
JS调用Android、Ios原生控件
Jan 06 Javascript
基于bootstrop常用类总结(推荐)
Sep 11 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
Sep 03 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
Jan 20 Javascript
ant design vue的form表单取值方法
Jun 01 Vue.js
给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同时支持GIF、png、JPEG
2006/10/09 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
php生成数组的使用示例 php全组合算法
2014/01/16 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
浅析Python 序列化与反序列化
2020/08/05 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
《再见了,亲人》教学反思
2014/02/26 职场文书
教师评语大全
2014/04/28 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
2016教师节问候语
2015/11/10 职场文书
社区志愿者服务心得体会
2016/01/22 职场文书
2019大学生实习报告
2019/06/21 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技