Javascript控制input输入时间格式的方法


Posted in Javascript onJanuary 28, 2015

本文实例讲述了Javascript控制input输入时间格式的方法。分享给大家供大家参考。具体分析如下:

之前做了一个Javascript控制时间格式的输入,主要用到了keydown和keyup两个事件,但感觉写的很复杂而且还有bug。

今日了解了一下keypress事件与keydown和keyup的区别。大致如下(目前只了解这么多):

keydown:按键按下的时候触发,通过event可以获取到keyCode,可以获取到文本框输入之前的值;

keyup:按键弹出(松开)时触发,通过event可以获取到keyCode,可以获取到文本框输入之后的值;

keypress:此事件在Chrome和IE中基本相同,但Firefox有点不一样;

1、在Chrome和IE中:只要按下的键能在文本框中出现字符则会触发(如输入字母、数字、符号等),通过event可以获取到keyCode,event.key为undefined;不能出现字符的则不会触发(如方向键、Home、Backspace等)

2、在火狐中:字母、数字、符号、方向、退格等按键均能触发,均可以通过event.key获取按键名,如果所按的键能输出字符则event.keyCode为0,如果不能输出字符则event.keyCode为对应的ASCII码

回到正题,先直接看代码(上面提到的event就相当于下面代码中的e):

var isFF = /firefox/i.test(navigator.userAgent);

$("input").on({

    keyup : function (e) {

        !/^[\d:]+$/.test(e.target.value) && (e.target.value = "");

    },

    keypress : function (e) {

        if (isFF && e.keyCode !== 0) {

            /// 在火狐中按任意键都会触发keypress事件,而在IE/Chrome中只有按下能输出字符的按键才会触发

            /// 针对火狐,e.keyCode!==0则按下了退格、方向、Home等按键之一

        } else {

            if (e.target.value.length > 7)

                return false;

            if (/\d{2}$/.test(e.target.value)) {

                e.target.value += ':';

            }

            var char = String.fromCharCode(e.keyCode === 0 ? e.which : e.keyCode);

            if (!/^\d/.test(char))

                return false;

        }

    }

});

通过isFF && e.keyCode !== 0来区分Firefox能输出字符的按键和不能输出字符的按键,由于Firefox中e.keyCode不一定能取到值,所以使用了e.which来取代。

keyup是用于处理使用输入法时能输入中文或字母的问题。

通过String.fromCharCode()得到ASCII码对应的字符。

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
Javascript 圆角div的实现代码
Oct 15 Javascript
js innerHTML 改变div内容的方法
Aug 03 Javascript
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
innerText 使用示例
Jan 23 Javascript
JS中使用sort结合localeCompare实现中文排序实例
Jul 23 Javascript
javascript白色简洁计算器
May 04 Javascript
jquery分割字符串的方法
Jun 24 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
Oct 07 Javascript
js实现百度搜索提示框
Feb 05 Javascript
详解微信小程序中组件通讯
Oct 30 Javascript
微信小程序实现多个按钮的颜色状态转换
Feb 15 Javascript
vuex 实现getter值赋值给vue组件里的data示例
Nov 05 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
Jan 28 #Javascript
js封装可使用的构造函数继承用法分析
Jan 28 #Javascript
js超时调用setTimeout和间歇调用setInterval实例分析
Jan 28 #Javascript
javascript原型链继承用法实例分析
Jan 28 #Javascript
Jquery 实现图片轮换
Jan 28 #Javascript
javascript查询字符串参数的方法
Jan 28 #Javascript
Jquery 实现弹出层插件
Jan 28 #Javascript
You might like
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
JavaScript实现QueryString获取GET参数的方法
2013/07/02 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
Vue项目中quill-editor带样式编辑器的使用方法
2017/08/08 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
用pandas按列合并两个文件的实例
2018/04/12 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python实现大文本文件分割
2019/07/22 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
Python定时任务APScheduler安装及使用解析
2020/08/07 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
浅谈Python __init__.py的作用
2020/10/28 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
台湾最大网路书店:博客来
2018/03/18 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
消防安全汇报材料
2014/02/08 职场文书
单位工作证明范文
2014/09/14 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
新学期开学寄语2016
2015/12/04 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
JS前端宏任务微任务及Event Loop使用详解
2022/07/23 Javascript