JS 只能輸入數字和兩位小數的JS


最近項目壓的喘不過氣來,所以都基本不來園子了,手頭還有好多事,就不扯淡了,直接上內容

 

JS代碼:

 1 function clearNoNum(value){
 2     //清除"數字"和"."以外的字符
 3     value = value.replace(/[^\d.]/g,"");
 4 
 5     //驗證第一個字符是數字而不是
 6     value = value.replace(/^\./g,"");
 7 
 8     //只保留第一個. 清除多余的
 9     value = value.replace(/\.{2,}/g,".");
10     value = value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
11 
12     //只能輸入兩個小數
13     value = value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); 
14 }

 

HTML代碼:

1 <input type="text" name="addoil" onkeyup="clearNoNum(this.value)" size="10"/>

 

是不是有人覺得有些眼熟,不錯依然是我抄別人的,保存在這里以便自己查找,也希望能給大家提供幫助。

 

不過這個方法有幾個問題有幾個問題

1.用keyup事件的話會有一個按鍵彈起的時間,雖然很短暫,但是我們可以看到輸入的內容一閃而逝

2.用keyup事件無法監聽到鼠標右鍵粘貼的內容改變事件

3.這個正則可以匹配到數字直接跟隨一個點的情況,如:1.,22.等等

 

我們說下解決方法

1,2兩條我們可用jquery的on方法給節點同時綁定inputpropertychange兩個事件就可以實時監聽輸入框的內容改變了,這個方法在處理那些需要實時統計輸入框已輸入文字數量的時候很好用。

至於第3條,誠如你們知道的,上面的正則我都是抄別人了,就不要說還能更進一步優化了,希望如果各位看官能給出優化方案,回復在下面。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM