2010-12-21 84 views
1

,大家好我试图做这样的事情 我有两个href和那些 <中间的文本框 - 当我按下> TEXT < +> 所以 - 和+在txt中的值必须增加或减少一个jQuery的。接下来()函数不工作

<!-- <div class="quantity noprint"> 
    <div class="subtract" title="Less Quantity"></div><input type="text" id="addToCartQty<%=addProduct.getLongID()%>" value="<%=addProduct.getInteger("ATR_WebMinQuantity",1)/addProduct.getInteger(MCRConstants.DM_ATR_LEGACY_CASE_VENDOR_PACK_SIZE,1) %>" name="ADD_CART_ITEM<>quantity" class="text" maxlength="3" /><div class="add" title="Add Quantity"></div> 

</div> --!> 

我正在使用jquery +和 - 文本框中的值。每当我按下+正确的发生,但为 - 它采取TEXT字段名称,而不是它的值。此任何解决方案,使之以如下采取文本框 Jquery的使用的值:

$(".quantity .subtract").click(function() { 
     var qtyInput = $(this).next('input'); 
     var qty = parseInt(qtyInput.val()); 
     if (qty > 1) 
      qtyInput.val(qty - 1); 

     qtyInput.focus(); 
     return false; 
    }); 

    $(".quantity .add").click(function() { 
     var qtyInput = $(this).prev('input'); 
     var qty = parseInt(qtyInput.val()); 
     if (qty >= 0 && (qty + 1 <= 999)) 
      qtyInput.val(qty + 1); 

     qtyInput.focus(); 
     return false; 
    }); 

回答

1

的.next()返回每个被选元素的下一个同级。如果一个选择器被传递给函数,那么只有当它与选择器匹配时才会返回下一个兄弟。由于你的+和 - 链接是独立的元素,他们将有不同的下一个兄弟姐妹。您正在寻找.siblings():

var qtyInput = $(this).siblings('input'); 
+0

所以,如果我使用var qtyInput = $(this).siblings('input'); 和qtyInput .val()那么这会给我的文本框的值?是这样的 – Sundhar 2010-12-21 14:59:10

+0

假设文本框是唯一的输入元素是你的+和 - 元素的兄弟,是的。 – draeton 2010-12-21 16:14:39

0

也许你可以尝试其他类型的查询:

$(".quantity .subtract").click(function() { 
    var qtyInput = $(this).closest('.quantity').find('input'); 
    var qty = parseInt(qtyInput.val()); 
    if (qty > 1) 
     qtyInput.val(qty - 1); 

    qtyInput.focus(); 
    return false; 
}); 

$(".quantity .add").click(function() { 
    var qtyInput = $(this).closest('.quantity').find('input'); 
    var qty = parseInt(qtyInput.val()); 
    if (qty >= 0 && (qty + 1 <= 999)) 
     qtyInput.val(qty + 1); 

    qtyInput.focus(); 
    return false; 
}); 
0

this作品。我清理了一些对此示例属性不必要的部分。

UPDATE:

可能ADD_CART_ITEM<>quantity是一个问题,什么原因呢? >可被解释为结束标记并导致奇怪的行为。至少,从您的示例中可以看到,您的代码应该可以正常工作,除非其中存在一些隐藏的问题。这个想法绝对正确。

+0

它不能被解释为关闭标签,因为它可以很好地处理HTML。否则该页面本身将脱离轨道。最重要的是它在报价中给出,所以没有办法会弄乱页面。 – Sundhar 2010-12-21 15:20:18

0

最后我解决了这个问题,请看下面

$(".quantity .subtract").click(function() { 
     var qtyInput = $(this).nextAll('a'); 
     var qtytxt = $(qtyInput).prev('input'); 
     var qty = qtytxt.val(); 

     if (qty > 1) 
      qtytxt.val(qty - 1); 
     qtytxt.focus(); 
     return false; 
    }); 

我只是得到了所有未来的HREF,并得到了上一个一个jQuery的,因此得到了TEXT作为LIK我怎么想的价值。 感谢所有你们,干杯;)