将min字段值保持为1

时间:2013-06-05 05:35:40

标签: jquery forms

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

我用过

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

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

已更新

这是完整的工作代码

       $('.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();
    }
});

});

但是现在我遇到了一个问题,如果字段值为null,它将恢复为0.我怎样才能超越它?

5 个答案:

答案 0 :(得分:2)

使用val(1)代替$(this).val()=1;并且您有一些语法错误

试试这段代码

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

答案 1 :(得分: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')

请注意,与javascript中的"" == 0进行比较,因此,如果您与0进行比较,则只要文本字段为空,您就会将值设置为'1'。如果您与'0'进行比较,则只有当用户在文本字段中明确键入零时才会替换该值。

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

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

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

答案 2 :(得分:0)

 $(this).val()=1;

应该是

 $(this).val(1);  

获取值 - .val()

设置值 - .val(值)

此外,您似乎错过了if语句中的$符号

if( $(this).val()==0) {

答案 3 :(得分:0)

将您的代码更改为。

    $('.cart_item_quantity input').keyup(function(){
    if((this).val()==0) {
    $(this).val(1); ///here was the problem..
     }
    } 

答案 4 :(得分:0)

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

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