2013-05-27 15 views
2

任何人都可以幫我找到解決方案來驗證文本字段以接受有效的十進制數。我想是這樣在html輸入文本字段中避免兩位小數的javascript函數(例如:12.1.1)

function fun_AllowOnlyAmountAndDot(txt) { 
    if (event.keyCode > 47 && event.keyCode < 58 || event.keyCode == 46) { 
     var txtbx = document.getElementById(txt); 
     var amount = document.getElementById(txt).value; 
     var present = 0; 
     var count = 0; 

     if (amount.indexOf(".", present) || amount.indexOf(".", present + 1)); { 
      // alert('0'); 
     } 

     /*if(amount.length==2) 
       { 
       if(event.keyCode != 46) 
       return false; 
       }*/ 
     do { 
      present = amount.indexOf(".", present); 
      if (present != -1) { 
       count++; 
       present++; 
      } 
     } 
     while (present != -1); 
     if (present == -1 && amount.length == 0 && event.keyCode == 46) { 
      event.keyCode = 0; 
      //alert("Wrong position of decimal point not allowed !!"); 
      return false; 
     } 

     if (count >= 1 && event.keyCode == 46) { 
      event.keyCode = 0; 
      //alert("Only one decimal point is allowed !!"); 
      return false; 
     } 
     if (count == 1) { 
      var lastdigits = amount.substring(amount.indexOf(".") + 1, amount.length); 
      if (lastdigits.length >= 4) { 
       //alert("Two decimal places only allowed"); 
       event.keyCode = 0; 
       return false; 
      } 
     } 
     return true; 
    } else { 
     event.keyCode = 0; 
     //alert("Only Numbers with dot allowed !!"); 
     return false; 
    } 
} 
+2

這有什麼做用PHP – Farkie

+0

@Farkie然後重新標記,不downvote。 – Renan

+0

我從來沒有下降過 - 我編輯和重新簽名。 – Farkie

回答

1

如果只想十進制數,然後進行簡單的正則表達式就足夠了:

function validateNumber(num) { 
    return /^-?[1-9][0-9]*(.[0-9]+)?$/.test(num); 
} 

在英語中,這意味着

  • ^:開始時的初輸入。
  • -?:可選的負號。
  • [1-9]:第一個字符必須是1-9範圍內的數字(即無前導零)。
  • [0-9]*必須後跟0-9範圍內的零個或多個數字。
  • (.[0-9]+)?:可以選擇在小數點後加上一個或多個位於0-9範圍內的數字。
  • $:你得到的一個,它必須是數字的結尾。
1

讓我們做到這一點很簡單:

var txtbx = document.getElementById("txt"); 

txtbx.addEventListener("keyup",function(e) { 
    var parsed = parseFloat(txtbx.value)||0; 
    if(parsed!=txtbx.value) txtbx.value = parsed; 
}); 
+0

感謝JanTuroň..得到解決方案 – ravi

相關問題