2017-05-25 68 views
-1

所以,我試圖驗證表單輸入,如果輸入的值大於可用配額,應該輸出錯誤警報。Javascript驗證故障

<script type="text/javascript"> 
      function validateform() { 
       var num = document.add_form.required_number.value; 

       var quota = document.add_form.quota.value; 


       if(num>quota) { 
        alert("Required Number Exceeds Demand Quota! The Allowed Quota is " + quota); 
        return false; 
       } 
       else { 
        alert("Error " + num + " " + quota); 
        return false; 
       } 
      } 
     </script> 

但不幸的是,即使認爲輸入的值高於可用配額,它也不會進入if條件。所以我寫了其他的東西來看看這些值是否被正確賦值給變量。它被正確分配。所以,當我提交表單,我得到一個警報 enter image description here

左右,這意味着它執行else語句,即使if語句很滿意..

+2

域的值總是文本,你需要用'>'或'<'比較之前將它們轉換爲數字。 –

+0

var var = document.add_form.required_number.value;''中的'required_number'是什麼? –

+0

使用ParseInt()函數解析值,然後comapre –

回答

2

的此問題是由於一個事實,即所有的HTML輸入值始終被視爲文本,在這種情況下,'5555' > '9'爲false。

這甚至不是原生JS或jQuery的問題,如已證明here

因此,要得到正確的比較結果,您必須先將它們轉換爲數字,例如,如果您期望使用整數或使用Number(),則使用parseInt()

$(function() { 
 
    console.log('native type = ' + typeof document.getElementById('test').value); 
 
    console.log('jquery type = ' + typeof $('#test').val()); 
 
    console.log("'5555' > '9' is " + ('5555' > '9' ? 'true' : 'false')); 
 
    console.log(" 5555 > 9 is " + (5555 > 9 ? 'true' : 'false')); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" id="test" value="123"/>