0

如果当前值小于另一个值,我有一个 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 的整数值转换为字符串,然后再将其用于表单中,因为我读到有时浏览器在这种情况下可能会表现得很奇怪,但这不起作用。任何想法为什么会发生这种情况?

提前致谢!

4

3 回答 3

3

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

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

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;
}
于 2012-07-05T16:37:15.520 回答
2

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

于 2012-07-05T16:35:17.493 回答
1

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

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

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

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

于 2012-07-05T16:45:41.723 回答