如果小于多于一个数字的另一个值错误,Javascript将添加到值

时间:2012-07-05 16:32:34

标签: javascript forms math

我有一个javascript函数,如果当前值小于另一个值,则会向数量添加一个。这是javascript函数:

function addQty()
{
    if(document.getElementById("quantity").value < document.getElementById("stock").value)
        document.getElementById("quantity").value++;
    else
        return;
}

以下是取值的表单元素:

<input type='text' id="quantity" name='quantity' value ='0' />
<input type='hidden' id="stock" name="stock" value="<?php echo $adjustedStock; ?>" />

所以基本上用户只有在库存足够的情况下才能在产品数量上加一个产品。

现在,如果库存中的数字是1-9,这绝对可以,但如果库存水平是两位数,那么用户可以添加到他们的购物篮中的最大值(即代码中的“数量”)将返回第一个数字+ 1.因此,如果股票为13,则最大数量为2,或者如果股票为63,则最大数量为7.

我已经尝试将$ adjustedStock的整数值转换为字符串,然后在表单中使用它,因为有时浏览器在这种情况下可能表现得很奇怪,但这不起作用。任何想法为什么会发生这种情况?

提前致谢!

3 个答案:

答案 0 :(得分:3)

<input>的“value”属性始终是一个字符串。因此,您在两个字符串之间进行比较,这不是您想要的。

在比较之前将值转换为数字:

function addQty()
{
    var qtyInp = document.getElementById('quantity'),
      qty = parseInt(qtyInp.value, 10),
      stk = parseInt(document.getElementById('stock').value, 10);

    if (qty < stk)
        qtyInp.value = qty + 1;
}

答案 1 :(得分:2)

表单元素值是字符串。使用parseInt或以其他方式转换为数字。

答案 2 :(得分:1)

您可以将Math.min()用于此目的......

function addQty() {
    var quantity = document.getElementById("quantity");

    quantity.value = Math.min(+quantity.value + 1, 
                              document.getElementById("stock").value);
}

这清楚地表明您想要增加的数量或库存总数中的较小者。