我有以下输入标记:
<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语句并重置值。
即。输入字段的值现在是1234(远远超过2)。
那么我做错了什么?
答案 0 :(得分:3)
目前,您正在比较字符串,并且比较不是数字:"10" < "2"
您需要解析值:
var max_amount = parseFloat($('#max_amount').val());
if (parseFloat($(this).val()) > max_amount){
答案 1 :(得分:1)
确保输入的类型为number
:
<input type="number" step="any" id="max_amount" />
然后执行parseFloat($('#max_amount').val())
将字符串转换为实际的十进制值。
当然,必须将所有输入视为数字。
最好使用type="number"
,这样您就不必担心在调用isNaN
时代码中的parseFloat
测试。
希望有所帮助。