如何让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 相关文章推荐
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
ASP中Sub和Function的区别说明
Aug 30 Javascript
js异常捕获方法介绍
Apr 10 Javascript
使用闭包对setTimeout进行简单封装避免出错
Jul 10 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
innerHTML属性,outerHTML属性,textContent属性,innerText属性区别详解
Mar 13 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
Jul 27 Javascript
JS获取地址栏参数的两种方法(简单实用)
Jun 14 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 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/02 国漫
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
JavaScript中的私有成员
2006/09/18 Javascript
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
javascript学习笔记整理(概述、变量、数据类型简介)
2015/10/25 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
详解jquery easyui之datagrid使用参考
2016/12/05 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
Vue 前端实现登陆拦截及axios 拦截器的使用
2019/07/17 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
django加载本地html的方法
2018/05/27 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
手机银行营销方案
2014/03/14 职场文书
《学棋》教后反思
2014/04/14 职场文书
消防安全宣传口号
2014/06/10 职场文书
管理失职检讨书范文
2015/05/05 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP