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 相关文章推荐
js静态作用域的功能。
Dec 25 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
Nov 25 Javascript
js 金额格式化来回转换示例
Feb 23 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
Nov 28 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
微信小程序后台持续定位功能使用详解
Aug 23 Javascript
koa2 数据api中间件设计模型的实现方法
Jul 13 Javascript
Java 生成随机字符的示例代码
Jan 13 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
第六节--访问属性和方法
2006/11/16 PHP
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
Track Image Loading效果代码分析
2007/08/13 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
JS TextArea字符串长度限制代码集合
2012/10/31 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
angular6开发steps步骤条组件
2019/07/04 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
[02:47]DOTA2英雄基础教程 野性怒吼兽王
2013/12/05 DOTA
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python如何求100以内的素数
2020/05/27 Python
护士实习生自我鉴定范文
2013/12/10 职场文书
优秀教师的感人事迹
2014/02/04 职场文书
人事专员的岗位职责
2014/03/01 职场文书
带病坚持工作事迹
2014/05/03 职场文书
冬季施工防火方案
2014/05/17 职场文书
公司活动总结范文
2014/07/01 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
房屋质量投诉书
2015/07/02 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python
Java线程的6种状态与生命周期
2022/05/11 Java/Android