如何让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 类
Nov 07 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
Jun 28 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
js 判断浏览器使用的语言示例代码
Mar 22 Javascript
jquery分页插件jpaginate在IE中不兼容问题
Apr 22 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
BootStrap轮播HTML代码(推荐)
Dec 10 Javascript
整理关于Bootstrap表单的慕课笔记
Mar 29 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
Jan 31 Javascript
浅谈Layui的eleTree树式选择器使用方法
Sep 25 Javascript
vue.js+element 默认提示中英文操作
Nov 11 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
咖啡的化学
2021/03/03 咖啡文化
php中strtotime函数用法详解
2014/11/15 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
JS限制条件补全问题实例分析
2016/12/16 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
Django的信号机制详解
2017/05/05 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python3利用Axes3D库画3D模型图
2020/03/25 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
大型车展策划方案
2014/02/01 职场文书
教师节促销方案
2014/03/22 职场文书
入党综合考察材料
2014/06/02 职场文书
罗马假日观后感
2015/06/08 职场文书
学生病假条怎么写
2015/08/17 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript