Javascript控制input輸入時(shí)間格式的方法
本文實(shí)例講述了Javascript控制input輸入時(shí)間格式的方法。分享給大家供大家參考。具體分析如下:
之前做了一個(gè)Javascript控制時(shí)間格式的輸入,主要用到了keydown和keyup兩個(gè)事件,但感覺寫的很復(fù)雜而且還有bug。
今日了解了一下keypress事件與keydown和keyup的區(qū)別。大致如下(目前只了解這么多):
keydown:按鍵按下的時(shí)候觸發(fā),通過event可以獲取到keyCode,可以獲取到文本框輸入之前的值;
keyup:按鍵彈出(松開)時(shí)觸發(fā),通過event可以獲取到keyCode,可以獲取到文本框輸入之后的值;
keypress:此事件在Chrome和IE中基本相同,但Firefox有點(diǎn)不一樣;
1、在Chrome和IE中:只要按下的鍵能在文本框中出現(xiàn)字符則會(huì)觸發(fā)(如輸入字母、數(shù)字、符號(hào)等),通過event可以獲取到keyCode,event.key為undefined;不能出現(xiàn)字符的則不會(huì)觸發(fā)(如方向鍵、Home、Backspace等)
2、在火狐中:字母、數(shù)字、符號(hào)、方向、退格等按鍵均能觸發(fā),均可以通過event.key獲取按鍵名,如果所按的鍵能輸出字符則event.keyCode為0,如果不能輸出字符則event.keyCode為對(duì)應(yīng)的ASCII碼
回到正題,先直接看代碼(上面提到的event就相當(dāng)于下面代碼中的e):
$("input").on({
keyup : function (e) {
!/^[\d:]+$/.test(e.target.value) && (e.target.value = "");
},
keypress : function (e) {
if (isFF && e.keyCode !== 0) {
/// 在火狐中按任意鍵都會(huì)觸發(fā)keypress事件,而在IE/Chrome中只有按下能輸出字符的按鍵才會(huì)觸發(fā)
/// 針對(duì)火狐,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來(lái)區(qū)分Firefox能輸出字符的按鍵和不能輸出字符的按鍵,由于Firefox中e.keyCode不一定能取到值,所以使用了e.which來(lái)取代。
keyup是用于處理使用輸入法時(shí)能輸入中文或字母的問題。
通過String.fromCharCode()得到ASCII碼對(duì)應(yīng)的字符。
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- js 時(shí)間格式與時(shí)間戳的相互轉(zhuǎn)換示例代碼
- 詳解js正則表達(dá)式驗(yàn)證時(shí)間格式xxxx-xx-xx形式
- vue.js將unix時(shí)間戳轉(zhuǎn)換為自定義時(shí)間格式
- Extjs TimeField 顯示正常時(shí)間格式的代碼
- JavaScript下的時(shí)間格式處理函數(shù)Date.prototype.format
- js將當(dāng)前時(shí)間格式轉(zhuǎn)換成時(shí)間搓(自寫)
- JavaScript下判斷時(shí)間格式的代碼
- javascript實(shí)現(xiàn)時(shí)間格式輸出FormatDate函數(shù)
- javascript實(shí)現(xiàn)的時(shí)間格式加8小時(shí)功能示例
相關(guān)文章
在JavaScript中調(diào)用Java類和接口的方法
這篇文章主要講述如何在JavaScript腳本語(yǔ)言中調(diào)用Java類和接口,對(duì)大家的學(xué)習(xí)和工作有一定的參考借鑒價(jià)值,有需要的朋友們下面來(lái)一起看看吧。2016-09-09
解決頁(yè)面js接受Long型損失精度問題(最新解決方案)
這篇文章主要介紹了解決頁(yè)面js接受Long型損失精度問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
jsonp跨域獲取數(shù)據(jù)的基礎(chǔ)教程
這篇文章主要給大家介紹了關(guān)于jsonp跨域獲取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
JavaScript實(shí)現(xiàn)10秒后再次獲取驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)10秒后再次獲取驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

