如何让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 相关文章推荐
Prototype1.5 rc2版指南最后一篇之Position
Jan 10 Javascript
csdn 博客中实现运行代码功能实现
Aug 29 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
Apr 04 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
Mar 18 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
JavaScript模仿Pinterest实现图片预加载功能
Oct 25 Javascript
JavaScript运动框架 链式运动到完美运动(五)
May 18 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
支付宝小程序tabbar底部导航
Nov 06 Javascript
js实现录音上传功能
Nov 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通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
PHP获取昨天、今天及明天日期的方法
2016/02/03 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
菜单效果
2006/10/14 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
自定义PC微信扫码登录样式写法
2017/12/12 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
python实现批量改文件名称的方法
2015/05/25 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
Amaze UI 文件选择域的示例代码
2020/08/26 HTML / CSS
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
出纳岗位职责范本
2013/12/01 职场文书
营销总监岗位职责
2014/09/16 职场文书
保密工作整改报告
2014/11/06 职场文书
护士自荐信怎么写
2015/03/06 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
PYTHON InceptionV3模型的复现详解
2022/05/06 Python