如何让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 相关文章推荐
List Information About the Binary Files Used by an Application
Jun 18 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
Jan 09 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
js运动动画的八个知识点
Mar 12 Javascript
谈谈对offsetleft兼容性的理解
Nov 11 Javascript
温习Javascript基础语法之词法结构
May 31 Javascript
Vuejs第十篇之vuejs父子组件通信
Sep 06 Javascript
js基础之DOM中document对象的常用属性方法详解
Oct 28 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
利用Ionic2 + angular4实现一个地区选择组件
Jul 27 Javascript
Vue实现商品详情页的评价列表功能
Sep 04 Javascript
微信小程序入门之绘制时钟
Oct 22 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网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
Nodejs模块载入运行原理
2018/02/23 NodeJs
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中getpass模块无回显输入源码解析
2018/01/11 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python3实现点餐系统
2019/01/24 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
python实现UDP协议下的文件传输
2020/03/20 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
HTML5通用接口详解
2016/06/12 HTML / CSS
Madda Fella官网:美国冒险家服装品牌
2020/01/16 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
入党介绍人评语
2014/05/06 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
学习退步检讨书
2014/09/28 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书