input text控制元件的onkeydown、onKeyPress、onkeyup事件的區別
input text輸入框的這三個鍵盤響應事件看似是差不多的,實際上他們的執行事件還是有區別的,經過了半天的各種嘗試(這裡實際上就是想做一個能將金錢數額利用js轉換成為大寫的功能),遇到的問題就是每次都是無法在第一次就獲取input的value,一開始被迫使用了onblur和onchange。
但是這樣使用者體驗太差了,所以我就測試題目上三種的不同,首先down這個是按下後就相應了,基本上比較適合做遊戲的上下左右。
第二種press,這個是按下並鬆開後相應,這裡需要提示,利用這個事件,在最開始獲取到的input的值是空,因為數值還沒有來得及寫入input。
第三種up,這個是相應最好的,也就是鬆開後,值寫入到了input然後執行,也就是我所需要的。
這裡分享下js程式碼,也是網上參考的不過寫的真的不錯各種情況
- function Chinese(num){
- if(!/^\d*(\.\d*)?$/.test(num))throw(new Error(-1, "Number is wrong!"));
- var AA = new Array("零","壹","貳","叄","肆","伍","陸","柒","捌","玖");
- var BB = new Array("","拾","佰","仟","萬","億","圓","");
- var CC = new Array(
- var a = (""+ num).replace(/(^0*)/g, "").split("."), k = 0, re = "";
- for(var i=a[0].length-1; i>=0; i--){
- switch(k){
- case 0 : re = BB[7] + re; break;
- case 4 : if(!new RegExp("0{4}\\d{"+ (a[0].length-i-1) +"}$").test(a[0]))
- re = BB[4] + re; break
- case 8 : re = BB[5] + re; BB[7] = BB[5]; k = 0; break;
- }
- if(k%4 == 2 && a[0].charAt(i)=="0" && a[0].charAt(i+2) != "0") re = AA[0] + re;
- if(a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k%4] + re; k++;
- }
- if(a.length>1){
- re += BB[6];
- for(var i=0; i<a[1].length; i++){
- re += AA[a[1].charAt(i)] + CC[i];
- if(i==2) break;
- }
- if(a[1].charAt(0)=="0" && a[1].charAt(1)=="0"){
- re+="元整";
- }
- }else{
- re+="元整";
- }
- return re;
- }
然後我還加入了一些需要的方法:
判斷了是否為空。
以上的註釋寫的很詳細了,只要能瞭解正則表示式就能很好的瞭解作者是如何實現的。
其中需要的知識主要是
jquery
javascript
正則表示式符號含義
其中輸入框限制只能輸入數字和小數點:
<input onkeypress="return (/[/d.]/.test(String.fromCharCode(event.keyCode)))" style="ime-mode:Disabled" />
參考來自
不能輸入中文
<input type="text" name="textfield" onkeyup="this.value=this.value.replace(/[^/da-z_]/ig,'');"/>
只能輸入 數字和下劃線
<input onkeypress="return (/[/d_]/.test(String.fromCharCode(event.keyCode)))" style="ime-mode:Disabled" />
只能輸入 數字和小數點
<input onkeypress="return (/[/d.]/.test(String.fromCharCode(event.keyCode)))" style="ime-mode:Disabled" />
只允許輸入漢字</br>
<input name="username" type="text" onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')">
其一,只允許輸入數字和小數點。
<input onKeypress="return (/[/d.]/.test(String.fromCharCode(event.keyCode)))" style="ime-mode:Disabled">
其二,判斷的更詳細一些,甚至22..2這樣不算數字也判斷得出來
<script>
function check(){
if (isNaN(tt.value))
{alert("非法字元!");
tt.value="";}
}
</script>
<input type="text" name="tt" onkeyup="check();">
其三,只允許輸入整數。其實也完全可以根據第三條來舉一反三做一些限制。
<script language=javascript>
function onlyNum()
{
if(!(event.keyCode==46)&&!(event.keyCode==8)&&!(event.keyCode==37)&&!(event.keyCode==39))
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)))
event.returnValue=false;
}
</script><input onkeydown="onlyNum();" style="ime-mode:Disabled>
結語,其實
style="ime-mode:Disabled
這句是比較實用的。意為關閉輸入法。省得有些人開著全形輸入數字,結果輸入不進去來找你哭天抹淚的,還怪你設計的不好。
只允許輸入數字
<input name="username" type="text" onkeyup="value=this.value.replace(//D+/g,'')">
只允許輸入英文字母、數字和下劃線(以下二種方法實現)
<input name="username" type="text" style="ime-mode:disabled">
<input name="username" type="text" onkeyup="value=value.replace(/[^/w/.//]/ig,'')">
只允許輸入英文字母、數字和&[email protected]
<input name="username" type="text" onkeyup="value=value.replace(/[^/[email protected]&]|_/ig,'')">
只允許輸入漢字
<input name="username" type="text" onkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,'')">
以上都極為常用,僅供參考
相關推薦
input text控制元件的onkeydown、onKeyPress、onkeyup事件的區別
input text輸入框的這三個鍵盤響應事件看似是差不多的,實際上他們的執行事件還是有區別的,經過了半天的各種嘗試(這裡實際上就是想做一個能將金錢數額利用js轉換成為大寫的功能),遇到的問題就是每次都是無法在第一次就獲取input的value,一開始被迫使用了onblur
MFC中設定static text控制元件的背景色、字型、字號和顏色
在實際的應用中,可以用WM_CTLCOLOR 訊息改變mfc中控制元件的顏色,比如現在就來改變一個static text控制元件的 字型、字型大小、字型顏色和背景色。 例如對話方塊的類為CTestDlg. 1. 在對話方塊的類中新增兩個變數. 方法:在classview選項卡中,選擇CTestDlg,右鍵,
QT學習day04---Input Widgets控制元件(Text Edit、(Double)Spin Box、Date/time Edit、Dial)
此篇學習以下控制元件: 一、Text Edit 文字框:一個文字框,可以輸入內容 //常用函式 toPlainText();//得到文字內資料,返回值為QString ui介面雙擊可以進行
Python——Entry、Text控制元件
background(bg) : 文字框背景色; foreground(fg) : 前景色;  
winform控制元件縮寫(八、九)水晶報表和其他
winform控制元件縮寫(八)水晶報表 序號 縮寫 空間名 1 crv CrystalReportViewer 2 rpd
機房收費系統之收取金額查詢(TPicker控制元件時間段取值、SQL語句中單引號與雙引號區別)
收取金額查詢窗體較組合查詢而言就是小菜一碟,但即便是內容較少也有其精華之處,現在分享一下我的學習過程吧^_^ 一、收取金額查詢窗體的流程圖: 二、問題集 這是什麼錯誤呢,為什麼會出現這個型別的錯誤? 產生此問題的程式碼部分是什麼樣子的呢? 以
WebBrowser控制元件頁面內容放大、縮小功能實現
在開發Winform程式中的WebBrowser控制元件時想要實現頁面內容放大、縮小功能,由於IE版本問題,WebBrowser中沒有Ctrl+滾輪實現放大、縮小頁面內容的功能,只能自己實現了。 實現具體程式碼如下: 1。在引用中引用COM元件Microsoft Inte
Android開發:如何在選單中呼叫控制元件(如Button、TextView……)
當我們在類內定義控制元件的全域性變數時,如Button……,只能在onCreate()中初始化,這樣的控制元件變數引用在選單中不好引用,會報錯。 如果想在選單中呼叫控制元件,可以在選單中重新定義控制元件
laydate時間控制元件 (開始日期、結束日期)
兩個input框,限制開始時間和結束時間 <input type="text" id='starttime' name='starttime' class="form-control input-date" /> <input type="t
C#中的自定義控制元件中的屬性、事件及一些相關特性的總結
今天學習了下C#使用者控制元件開發新增自定義屬性的事件,主要參考了MSDN,總結並實驗了一些用於開發自定義屬性和事件的特性(Attribute)。 在這裡先說一下我的環境: 作業系統:Windows7旗艦版(Service Pack 1) VS版本:Microsoft
Android 使用shape定義不同控制元件的的顏色、背景色、邊框色
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/
js中的鍵盤事件:onkeydown、onkeypress、onkeyup
相關程式碼: <!doctype html> <html> <head> <!--聲明當前頁面編碼集(中文編碼<gbk,gb231
Javascript中的onkeydown、onkeypress、onkeyup的區別
測試介面如下: 測試程式碼如下: html程式碼: <input type="text" onkeydown="downEvent()" onkeypress="pressEvent()
JS日曆控制元件集合----附效果圖、原始碼
在進行開發的過程中,經常需要輸入時間,特別是在進行查詢、統計的時候,時間限定更為重要。 儘管ASP.NET也集成了日曆控制元件,但是其整合的程式碼量很大,你可以做一個測試,當你在頁面使用一個日曆控制元件時,在釋出之後檢視該頁面的原始碼,你會驚奇發現,日曆控制元件
Asp.Net 獲取FileUpload控制元件的檔案路徑、檔名、副檔名
string fileNameNo = Path.GetFileName(FileUploadImg.PostedFile.FileName); //獲取檔名和副檔名string DirectoryName = Path.GetDirectoryName(FileUploa
MFC的CEdit控制元件中實現複製、貼上、剪下等操作的快捷鍵
今天在一個MFC的GUI程式中實現了一個自定義的列表控制元件類(CListCtrl),在這個類裡嵌入了一個CEdit類以便於編輯列表項,為了實現在編輯每個列表項時能支援快捷鍵,在派生的CEdit類加入下面這個函式: [cpp] view plaincopyprint
我的YUV播放器MFC小筆記:設定picture控制元件背景為黑色、視窗縮放
影象的顯示主要使用picture控制元件,一般播放器,在初始化時,播放畫面的區域背景都是黑色的,在YUV播放器,也如此。但在網上找了很久的資料才實現該功能,其實說白了,程式碼很簡單,在OnPaint函式中將picture畫為黑色即可。程式碼: //picture控制
SwipeToLoadLayout佈局中新增自定義控制元件仿美團、餓了嗎等下拉效果
SwipeToLoadLayout是一個可重用的下拉重新整理和上拉載入控制元件,理論上支援各種View和ViewGroup(ListView,ScrollView,RecyclerView,GridView,WebView,Linearlayout,Rela
Android仿微信朋友圈高清圖檢視控制元件可縮放、雙擊、移動
該庫支援和包含的功能: 1.圖片支援手勢操作, 可縮放、雙擊、移動 2.圖片載入時的進度條, 支援自定義 該庫的效果圖如下: 本地相簿圖片效果圖: 點選預覽大圖的效果 本想直接新增gradle依賴庫,不巧的是,之前版本已作廢,待現在版本穩定後,
菜鳥也瘋狂,易語言自繪控制元件__編輯框、組合框
編輯框的自繪有點複雜,本原始碼採用了避重就輕的方式:只重繪了非客戶區(邊框),而客戶區部分其實並沒有在WM_PAINT重繪,而是通過編輯框的父視窗中的WM_CTLCOLOREDIT訊息,從而改變編輯框的前景色與背景色,其效果也不錯; 組合框ComboBox