1

我有一个购物车数量的文本字段。我不想让用户对购物车中的任何物品都有 0 数量。如果他们想要零,那么他们必须删除该项目。

我用了

    $('.cart_item_quantity input').keyup(function(){
    if((this).val()==0) {
    $(this).val()=1;
}

对于该领域,但它似乎不起作用。因此,每当购物车数量等于 0 时,我希望将其替换为 1。如果情况也是如此,它也等于 null。

更新

这是完整的工作代码

       $('.cart_item_quantity input').keyup(function(){
if($(this).val()==0) {
    $(this).val(1);
}
var update_obj = $(this);
var quantity = $(this).val(); // item quantity   NEED TO SANITIZE THIS TO ONLY NUMBERS
var array_id = $(this).parent().siblings(".array_id").val(); // item array number
var item_price = parseFloat($(this).parent().siblings(".cart_item_price").find("span").html()); // price of item
var item_total;
var total_price=0;
$.ajax({        
    type    : 'POST',
    url     : 'ajax/update-cart.php',
    data    : 'quantity='+quantity+'&array_id='+array_id,
    success : function(data) {
        item_total = item_price * quantity;
        update_obj.parent().siblings(".cart_item_total").find("span").html(item_total);
        calculate_total_price();
        cart_contents();
        cart_quantity();
    }
});

});

但是现在我面临一个问题,如果字段值为空,它会恢复为 0。我该如何克服呢?

4

5 回答 5

2

使用 val(1)而不是, $(this).val()=1;你有一些语法错误

试试这个代码

$('.cart_item_quantity input').keyup(function(){
      if((this).val()==0) 
         $(this).val(1);
});
于 2013-06-05T05:37:35.820 回答
1
  • 你还没有关闭keyup(括号。
  • 你是在比较(this).val()而不是$(this).val()
  • 您应该使用.val(x)而不是设置值.val() = x.val函数不是属性
  • 据我们所知:.cart_item_quantity input寻找一个输入 .cart_item_quantity. 如果您的意思是具有cart_item_quantity您要编写的类的输入$('input.cart_item_quantity')

请注意,"" == 0 在 javascript 中进行比较,因此如果您进行比较,0您将'1'在文本字段为空时立即将值设置为。如果您改为与 进行比较'0',则仅当用户在文本字段中显式键入零时才替换该值。

另请注意,作为用户,使用在您键入时正在操作的文本字段可能不方便。考虑改用验证。您可能还需要考虑 HTML5number类型,您可以在其中以声明方式设置此行为:

<input type="number" min="1" value="1" />

通过这种方式,用户可以清楚地看到期望大于零的数字。用户可以手动输入其他内容,非支持 HTML5 的浏览器只会显示常规输入字段,因此仍然需要验证。

于 2013-06-05T05:38:25.477 回答
0
 $(this).val()=1;

应该是

 $(this).val(1);  

获取价值——. val()

设置值 -- .val(value)

此外,您似乎缺少$if 语句中的符号

if( $(this).val()==0) {
于 2013-06-05T05:37:47.623 回答
0

将您的代码更改为。

    $('.cart_item_quantity input').keyup(function(){
    if((this).val()==0) {
    $(this).val(1); ///here was the problem..
     }
    } 
于 2013-06-05T05:40:01.493 回答
0

我猜你正在检查 cart_item_quantity 不为空。所以这样做。这可能会有所帮助。

$('.cart_item_quantity input').keyup(function(){
    if((this).val()=="") {
    $(this).val(1);
}
于 2013-06-05T05:41:48.273 回答