如何让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实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
摘自百度的图片轮换效果代码
Nov 19 Javascript
ie 调试javascript的工具
Apr 29 Javascript
IE和Firefox下event事件杂谈
Dec 18 Javascript
javascript 全等号运算符使用说明
May 31 Javascript
Javascript延迟执行实现方法(setTimeout)
Dec 30 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
AngularJS中使用HTML5手机摄像头拍照
Feb 22 Javascript
JavaScript评论点赞功能的实现方法
Mar 13 Javascript
JavaScript 实现 Tab 点击切换实例代码
Mar 25 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
Dec 20 Javascript
ES2020让代码更优美的运算符 (?.) (??)
Jan 04 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
便携利器 — TECSUN PL-365简评
2021/03/02 无线电
玩转虚拟域名◎+ .
2006/10/09 PHP
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php删除二维数组中的重复值方法
2018/03/12 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
javascript replace()第二个参数为函数时的参数用法
2016/12/26 Javascript
React学习笔记之条件渲染(一)
2017/07/02 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
修改vue+webpack run build的路径方法
2018/09/01 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
2018/12/05 jQuery
vue 解决computed修改data数据的问题
2019/11/06 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
Python 实现数组相减示例
2019/12/27 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
2020/05/25 Python
非常震撼的纯CSS3人物行走动画
2016/02/24 HTML / CSS
集团公司总经理岗位职责
2013/12/20 职场文书
怀念母亲教学反思
2014/04/28 职场文书
辩护词格式
2015/05/22 职场文书
企业培训简报范文
2015/07/20 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
学生会干部任命书
2015/09/21 职场文书
八年级英语教学反思
2016/02/15 职场文书
施工安全责任协议书
2016/03/23 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers