jQuery輸入時間日期自動格式化效果
如果在文字框輸入時間日期的時候,能夠自動進行格式化處理。那麼對於使用者來說人性化程度會得到極大的提高,下面就是一個能夠實現此功能的程式碼示例。
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> </style> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <script> $(function(){ var inputs = $(".hhm-dateInputer"); var dateStr = "____-__-__"; inputs.each(function(index,elem){ var input = $(this); input.on("keydown",function(event){ var that = this; //當前觸發事件的輸入框。 var key = event.keyCode; var cursorIndex = getCursor(that); //輸入數字 if(key >= 48 && key <= 57){ //游標在日期末尾或游標的下一個字元是"-",返回false,阻止字元顯示。 if(cursorIndex == dateStr.length || that.value.charAt(cursorIndex) === "-") {return false;} //字串中無下劃線時,返回false if(that.value.search(/_/) === -1){return false;} var fron = that.value.substring(0,cursorIndex); //游標之前的文字 var reg = /(\d)_/; setTimeout(function(){ //setTimeout後字元已經輸入到文字中 //游標之後的文字 var end = that.value.substring(cursorIndex,that.value.length); //去掉新插入數字後面的下劃線_ that.value = fron + end.replace(reg,"$1"); //尋找合適的位置插入游標。 resetCursor(that); },1); return true; //"Backspace" 刪除鍵 }else if( key == 8){ //游標在最前面時不能刪除。 但是考慮全部文字被選中下的刪除情況 if(!cursorIndex && !getSelection(that).length){ return false;} //刪除時遇到中劃線的處理 if(that.value.charAt(cursorIndex -1 ) == "-"){ var ar = that.value.split(""); ar.splice(cursorIndex-2,1,"_"); that.value = ar.join(""); resetCursor(that); return false; } setTimeout(function(){ //值為空時重置 if(that.value === "") { that.value = "____-__-__"; resetCursor(that); } //刪除的位置加上下劃線 var cursor = getCursor(that); var ar = that.value.split(""); ar.splice(cursor,0,"_"); that.value = ar.join(""); resetCursor(that); },1); return true; } return false; }); input.on("focus",function(){ if(!this.value){ this.value = "____-__-__"; } resetCursor(this); }); input.on("blur",function(){ if(this.value === "____-__-__"){ this.value = ""; } }); }); //設定游標到正確的位置 function resetCursor(elem){ var value = elem.value; var index = value.length; //當使用者通過選中部分文字並刪除時,此時只能將內容置為初始格式洛。 if(elem.value.length !== dateStr.length){ elem.value = dateStr; } var temp = value.search(/_/); index = temp> -1? temp: index; setCursor(elem,index); //把游標放到第一個_下劃線的前面 //沒找到下劃線就放到末尾 } }); function getCursor(elem){ //IE 9 ,10,其他瀏覽器 if(elem.selectionStart !== undefined){ return elem.selectionStart; } else{ //IE 6,7,8 var range = document.selection.createRange(); range.moveStart("character",-elem.value.length); var len = range.text.length; return len; } } function setCursor(elem,index){ //IE 9 ,10,其他瀏覽器 if(elem.selectionStart !== undefined){ elem.selectionStart = index; elem.selectionEnd = index; } else{//IE 6,7,8 var range = elem.createTextRange(); range.moveStart("character",-elem.value.length); //左邊界移動到起點 range.move("character",index); //游標放到index位置 range.select(); } } function getSelection(elem){ //IE 9 ,10,其他瀏覽器 if(elem.selectionStart !== undefined){ return elem.value.substring(elem.selectionStart,elem.selectionEnd); } else{ //IE 6,7,8 var range = document.selection.createRange(); return range.text; } } function setSelection(elem,leftIndex,rightIndex){ if(elem.selectionStart !== undefined){ //IE 9 ,10,其他瀏覽器 elem.selectionStart = leftIndex; elem.selectionEnd = rightIndex; } else{//IE 6,7,8 var range = elem.createTextRange(); range.move("character",-elem.value.length); //游標移到0位置。 //這裡一定是先moveEnd再moveStart //因為如果設定了左邊界大於了右邊界,那麼瀏覽器會自動讓右邊界等於左邊界。 range.moveEnd("character",rightIndex); range.moveStart("character",leftIndex); range.select(); } } </script> <body> <input type="text" id="dateInputer" class="hhm-dateInputer" placeholder="請輸入日期"> </body> </html>
相關文章
- javascript自動變動的時間日期效果JavaScript
- js正則格式化日期時間自動補0JS
- GsonBuilder匯出null值、格式化輸出、日期時間UINull
- JavaScript時間日期格式化JavaScript
- js能夠自動變動的時間日期效果程式碼例項JS
- C#日期時間格式化C#
- C#日期格式化,時間C#
- javascript實現的動態時間日期效果JavaScript
- JavaScript 日期和時間的格式化JavaScript
- JavaScript自定義時間日期格式化JavaScript
- JavaScript 自動重新整理的時間日期JavaScript
- 時間日期格式化程式碼例項
- javascript時間日期格式化程式碼分析JavaScript
- PHPdate格式化一個本地時間/日期PHP
- JavaScript自動更新時間效果詳解JavaScript
- javascript時間日期格式化例項程式碼JavaScript
- js時間日期格式化程式碼例項JS
- js格式化時間日期程式碼例項JS
- javascript實現的時間日期格式化外掛JavaScript
- java日期格式化輸出Java
- jQuery 郵箱輸入字尾自動補全jQuery
- jquery 實現郵箱輸入自動提示功能jQuery
- JavaScript 動態時間日期JavaScript
- JavaScript動態時間日期JavaScript
- 原生JavaScript 自動變化的時間日期程式碼JavaScript
- 驗證使用者輸入的字串是否為日期時間字串
- 細說PHP筆記08(第12章)--日期和時間,建立時間戳,mktime轉換unix時間戳,獲取字串時間,獲得日期和時間資訊,日期和時間格式化輸出,microtime()獲取微秒數PHP筆記時間戳字串
- javascript實現的時間日期格式化程式碼JavaScript
- Golang中的格式化時間輸出Golang
- mysql中時間日期格式化MySql
- jQuery實現的但行文字具有時間間隔向上滾動效果jQuery
- js簡單時間日期格式化程式碼例項JS
- javascript時間日期格式化和獲取封裝類JavaScript封裝
- VC++基礎 格式化時間輸出C++
- Jquery對當前日期的操作(格式化當前日期)jQuery
- jQuery實現使用者輸入自動完成功能jQuery
- jQuery文字框輸入數字彈出格式化層jQuery
- python-Pycharm中自動-新增時間-日期-作者等資訊PythonPyCharm