在javascript驗證表單、文本域、整數小數的方式多種多樣。今天我也寫了一個驗證小數的解決方案,不需要使用者點擊什麼按鈕或是失去焦點後。給予使用者反感的alert警告提示。這裡不能輸入的是不容許出現在文字框中的。就這樣也不需要經常alert來提示使用者輸入錯誤。此驗證方法很簡單,但設計也很巧妙。使用的是我們常用split、array、substring等方法函數設計而成;</p><p><html><br /><head><br /><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br /><title>小數驗證</title><br /><script><br />String.prototype.replaceAll = function(s1, s2) {<br /> return this.replace(new RegExp(s1, "gm"), s2); //g全域、m多行<br />}</p><p>String.prototype.replaceAll2Excep = function(s1, s2) {<br />var temp = this;<br />while (temp.indexOf(s1) != -1) {<br />temp = temp.replace(s1, s2);<br />}<br /> return temp;<br />}</p><p>/***<br />* 次驗證方法很簡單,但設計也很巧妙。使用的是我們常用split、array、substring等<br />* @author hoojo<br />* @param o 驗證的對象,即當前文本域<br />* @param precision 精確多少位小數<br />* @version 3.1<br />**/<br />function checkFloat(o, precision) {<br />var val = o.value;//驗證小數<br />if (parseFloat(val) != val) {<br />var ar = val.split('');<br />for(var i = 0; i < ar.length; i++) {<br />var charCode = ar[i].charCodeAt(0);<br />if (charCode > 57 || charCode < 46 || charCode == 47) {<br />//o.value = val.replaceAll(ar[i], '');這個replaeAll裡面用的正則,/*+是特殊字元,所以才不能替換的<br /> o.value = val.replaceAll2Excep(ar[i], '');<br />}<br />}<br />}<br />var ary = o.value.split('.');<br />if (ary.length >= 2) {<br />if (ary[0] == "") {<br />ary[0] = 0;<br />}<br />var temp = ary[1];<br />if (ary[1].length > precision) {<br />ary[1] = ary[1].substring(0, precision);<br />}<br />o.value = ary[0] + "." + ary[1];<br />if (0 == precision) {<br />o.value = ary[0];<br />}<br />} else {<br />var vals = o.value;<br />if (vals != "" && !isNaN(vals)) {<br />o.value = parseInt(vals);<br />}<br />}<br />}<br /></script><br /></head></p><p><body><br /><input type=text value="" onkeyup="checkFloat(this, 1)" maxlength="9"/><br /></body></p><p></html>