最近項目壓的喘不過氣來,所以都基本不來園子了,手頭還有好多事,就不扯淡了,直接上內容
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方法給節點同時綁定input,propertychange兩個事件就可以實時監聽輸入框的內容改變了,這個方法在處理那些需要實時統計輸入框已輸入文字數量的時候很好用。
至於第3條,誠如你們知道的,上面的正則我都是抄別人了,就不要說還能更進一步優化了,希望如果各位看官能給出優化方案,回復在下面。