2017-05-25 5 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条件には入りません。だから私は値が変数に正しく割り当てられているかどうかを調べるためにelseを書きました。それは正しく割り当てられました。だから私は、私はそう警告 enter image description here

を取得し、フォームを送信した後、これはそれが声明が満たされた場合にもかかわらず、elseステートメントを実行することを意味..

+2

フィールドの値は常にテキストです、あなたは '>'や '<'と比較する前に数字に変換する必要があります。 –

+0

'var num = document.add_form.required_number.value;で' required_number'とは何ですか? –

+0

ParseInt()関数を使用して値を解析します。 –

答えて

2

ここでの問題は、そのすべてのHTML事実にあります入力値は常にテキストとして扱われます。この場合、'5555' > '9'はfalseです。

実証済みのように、ネイティブJSまたはjQueryの問題ではありません。here

正しい比較を行うには、まず数値をparseInt()(整数が必要な場合)、または単にNumber()を使用して数値に変換する必要があります。

$(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"/>

関連する問題