1

jQuery が 0 (たとえば 100)trail の値を取得すると、それが省略されることがわかりました。したがって、5>100 を比較すると、結果は true になります。では、どうすればこれを解決できますか?HTMLコードは次のとおりです。

<form id="target">
    <input type="text" id="max"  value="100"/>
    <input type="text" id="number" />
    <input id="submit" type="submit" value="submit" />
</form>

そしてここにjqueryがあります:

$('#target').submit( function() {
  var a = $("#number").val();
  var b = $("#max").val();
  if( a > b){
     alert("exceed limit"); 
  }

return false;
});

ここでデモを見ることができます: http://jsfiddle.net/yqMGG/91/

4

3 に答える 3

3

文字列値ではなく、数値を比較する必要があります。関数の出力は、次のようにDOM レベル 2.val()に準拠した DOMString 値です。

interface HTMLInputElement : HTMLElement {
  ...
  attribute DOMString       value;
  ...
}

したがって、文字列は辞書式に比較されるため、(5 > 100) テストは実際"5" > "100"に真です。

解決策は変更することです

if( a > b){

if(+a > +b){

+置演算子は、その引数を数値に強制します。

于 2013-01-08T07:32:00.483 に答える
0

を使用parseFloat()します。それ以外の場合、値は文字列と見なされます。

$('#target').submit( function() {
  var a = parseFloat($("#number").val());
  var b = parseFloat($("#max").val());
  if( a > b){
     alert("exceed limit"); 
  }

    return false;
});

デモを見る

于 2013-01-08T07:31:29.520 に答える
0

1 を掛けて文字列から数値に変換するか、parseInt を使用できます。

var a = $("#number").val() * 1;

また

var a = parseInt($("#number").val(), 10);

parseInt 関数の 2 番目のパラメーターは基数です。

于 2013-01-08T07:50:30.843 に答える