Enter回车切换输入焦点实现思路与代码兼容各大浏览器


Posted in Javascript onSeptember 01, 2014

做项目时,客户要求能够用enter回车直接切换输入(焦点),当最后一个时候,直接提交信息。

第一想法就是,网上去copy一段代码直接用。但了百度、谷歌找了个遍,找到的代码80%以上都是一样的。有的代码太老,都不能用。有的只有部分浏览器能用。折腾了半小时也没个合适的办法。最后一想,干脆自己动手。

一、思路

每次点击回车的时候,获取当前的焦点位置,然后设置它的下一个元素获取焦点;

二、代码

<script type="text/javascript">
$('input:text:first').focus(); 
document.onkeydown = function enterHandler(event)
{
var inputs = $("input"); //可自行添加其它过滤条件 
var browser = navigator.appName ; //浏览器名称
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 

var Code = '' ;
if(browser.indexOf('Internet')>-1) // IE 
Code = window.event.keyCode ;
else if(userAgent.indexOf("Firefox")>-1) // 火狐
Code = event.which;
else // 其它
Code = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

if (Code == 13) //可以自行加其它过滤条件
{
for(var i=0;i<inputs.length;i++)
{
if(inputs[i].id == document.activeElement.id)
{ 
i = i== (inputs.length - 1) ? -1 : i ;
$('#'+ inputs[i+1].id ).focus()
break;
}
}
}
}
</script>

其中,因为IE和火狐对键值获取的不同,所以对浏览器做了简单的判断区分。这样就可以在各个浏览器上获取敲击的键值。

最后,获取到当前的值以后,就可以加其它的各种条件了。

Javascript 相关文章推荐
js 可拖动列表实现代码
Dec 13 Javascript
jQuery实现动画效果的简单实例
Jan 27 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
Jan 09 Javascript
javascript截取字符串小结
Apr 28 Javascript
js和C# 时间日期格式转换的简单实例
May 28 Javascript
JavaScript实现时间倒计时跳转(推荐)
Jun 28 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
vue下跨域设置的相关介绍
Aug 26 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
vue.js2.0 实现better-scroll的滚动效果实例详解
Aug 13 Javascript
微信小程序组件传值图示过程详解
Jul 31 Javascript
jQuery淡入淡出元素让其效果更为生动
Sep 01 #Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
Sep 01 #Javascript
JQuery中的html()、text()、val()区别示例介绍
Sep 01 #Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 #Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
Sep 01 #Javascript
JavaScript中的单引号和双引号报错的解决方法
Sep 01 #Javascript
一个简单的动态加载js和css的jquery代码
Sep 01 #Javascript
You might like
创建数据库php代码 用PHP写出自己的BLOG系统
2010/04/12 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
javascript 伪数组实现方法
2010/10/11 Javascript
jQuery实现当按下回车键时绑定点击事件
2014/01/28 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery限制图片大小的方法
2016/05/25 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
vue多次循环操作示例
2019/02/08 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
在Python中使用M2Crypto模块实现AES加密的教程
2015/04/08 Python
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
Python基于类路径字符串获取静态属性
2020/03/12 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
C/C++程序员常见面试题一
2012/12/08 面试题
测绘工程本科生求职信
2013/10/10 职场文书
个人课题方案
2014/05/08 职场文书
公司建议书怎么写
2014/05/15 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python