1

次の入力タグがあります。

<input id="item_amount" type="text" id="item_stk" placeholder="1" value="" class="input-small" placeholder="" style="float: left;">

この入力フィールドの値が一定量未満であることを確認するために、次の Jquery 関数を作成しました。

var max_amount = $('#max_amount').val();

$( "#item_amount" ).keyup(function() {
       if($(this).val() > max_amount){
        $(this).val( max_amount);
    }
});

現在、最大値は 2 に設定されています

入力フィールドに 4 を書き込むと、値が正しく 2 に返されます。

ただし、最初に 1、次に 2、次に 3、次に 4 ect を書くことから始める場合。その後、if ステートメントに入ることはなく、値をリセットします。

すなわち。入力フィールドの値は 1234 になりました (これは 2 をはるかに超えています)。

それで、私は何を間違っていますか?

4

2 に答える 2

3

現在、文字列を比較していますが、比較は数値ではありません:"10" < "2"

値を解析する必要があります:

var max_amount = parseFloat($('#max_amount').val());
if (parseFloat($(this).val()) > max_amount){
于 2013-10-12T15:44:21.527 に答える
1

入力が次のタイプであることを確認してくださいnumber

<input type="number" step="any" id="max_amount" />

次にparseFloat($('#max_amount').val())、文字列を実際の 10 進数値に変換するために a を実行します。

もちろん、これは数値として扱いたいすべての入力に対して行う必要があります。

の呼び出し時にコード内のテストtype="number"について心配する必要がないように、使用することをお勧めします。isNaNparseFloat

それが役立つことを願っています。

于 2013-10-12T15:56:58.643 に答える