2013-04-16 66 views
0

我試圖讓我的輸入字段只接受整數並寫了一些java來幫助驗證,但每次我單擊下一個輸入以插入值時,它都會發送我的警報。我錯過了什麼嗎?使用整數驗證數量

<script type="text/javascript"> 
    var cartAmount, subtotal, pstAmount, pstTax, gstTax, taxAmount, shipCharge, afterTax; 

    function validate() { 
     //Whole Numbers with Regexp 
      var rx = new RegExp(/\d+/); 

      if(document.getElementsByClassName("inputValue").value != rx || document.getElementsByClassName("inputValue").value == "") { 
       alert("Please use only whole quantities."); 
       return false; 
      } 
    } 
    function sumCart() { 

     //Adding Cart Values 
      cartAmount = (document.frmMain.item1.value * 3.99) + (document.frmMain.item2.value * 5.99); 

     //Finding Subtotals 
      document.frmMain.subtotalAmt.value = Math.round(cartAmount*100)/100; 
      subtotal = document.frmMain.subtotalAmt.value; 

     //Finding Taxes 
      pstTax = document.frmMain.taxAmount.value; 
      gstTax = .05; 

      pstAmount = Math.round((subtotal * pstTax)*100)/100; 
      gstAmount = Math.round((subtotal * gstTax)*100)/100; 

      taxAmount = parseFloat(pstAmount,10) + parseFloat(gstAmount,10); 

      document.getElementById("tax").innerHTML = "Tax in dollars is $" + Math.round(taxAmount * 100)/100; 

     //Finding Total 
      shipCharge = 0; 
      afterTax = parseFloat(subtotal) + parseFloat(taxAmount) + parseFloat(shipCharge); 
      document.frmMain.totalAmt.value = Math.round(afterTax*100)/100; 
    } 
</script> 
+0

爲了我們每天都在做你的工作,報酬或報酬的回報在哪裏? – Jay

+1

Java!= Javascript – Barmar

+0

它不是每一天... – Xero1

回答

0

試試這個驗證功能:

function validate() { 
    //Whole Numbers with Regexp 
    var rx = new RegExp(/^\d+$/); 
    inputs = document.getElementsByClassName("inputValue"); 
    for (var i = 0; i < inputs.length; i++) { 
     var input = inputs[i].value; 
     if (!rx.test(input)) { 
      alert("Please use only whole quantities."); 
      return false; 
     } 
    } 
} 

你的代碼有幾個問題:

  1. 的正則表達式/\d+/只是檢查值是否有任何數字,它不檢查它是否有只有有數字。您需要以^$開頭和結尾來檢查整個值。

  2. 您使用的是value != rx,它不執行正則表達式測試。你必須使用rx.test()

  3. getElementsByClassName返回元素的集合,而不是單個元素。您需要遍歷它們以獲取值。

+0

非常感謝你。我已經使用了ElementsByClassName,因爲我有多個輸入,需要檢查它的值是否是整數。 – Xero1

+0

我明白你爲什麼使用它。看起來像檢查Javascript控制檯的錯誤會告訴你,你正在使用它不正確。 – Barmar