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 等等。然后它永远不会进入 if 语句并重置值。

IE。输入字段的值现在是 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" />

然后执行 aparseFloat($('#max_amount').val())将字符串转换为实际的十进制值。

当然,这必须对您要视为数字的所有输入来完成。

最好使用type="number",这样您就不必担心isNaN代码中调用parseFloat.

希望有帮助。

于 2013-10-12T15:56:58.643 回答