【发布时间】:2015-11-10 18:04:34
【问题描述】:
我有 2 个输入,如下所示。其中一个是按钮,另一个是文本框。 qty-input 用于输入产品的数量,当我使用 jquery 单击按钮时。我更新了我的购物车。当我将它硬编码为 1 时它可以工作,但我无法通过从文本框中读取而不回发来弄清楚如何做到这一点。
下面的代码属于部分视图中的 1 个产品,它显示在一个列表中,我需要为每个创建的文本框分配 id,所以这个文本框应该属于按钮。
当我简单地使用var quantity = $('.qty-input').val(); 时,它仅适用于第一个生成的文本框。这意味着如果我想将第二个产品添加到购物车中,它会因为它具有相同的类而感到困惑。因此我必须使用 Id。
另一个想法可以使用 angular.js,我看到了一些例子,它看起来很容易实现,但我不知道该怎么做?
jquery 或 angular.js,我需要你的帮助。谢谢。
在我看来
var quantity = 1;
string addtocartlink = "";
addtocartlink = Url.RouteUrl("AddProductToCart-Catalog", new { productId = Model.Id, shoppingCartTypeId = shoppingCartTypeId, quantity = quantity });
<div class="cart-input">
<input class="qty-input" id="@Model.Id" data-val="true" type="text" value="1">
<input type="button" value="@(addToCartClass)" class="button-2 product-box-add-to-cart-button @addToCartClass" onclick="AjaxCart.addproducttocart_catalog('@addtocartlink');return false;" />
</div>
我的 javascript
addproducttocart_catalog: function (urladd,id) {
if (this.loadWaiting != false) {
return;
}
this.setLoadWaiting(true);
var quantity = $(id).val();
urladd = urladd.substring(0, urladd.length - 1) + quantity;
$.ajax({
cache: false,
url: urladd,
type: 'post',
success: this.success_process,
complete: this.resetLoadWaiting,
error: this.ajaxFailure
});
},
【问题讨论】:
-
您可以探索事件对象。像 $(event.target)
-
您的代码有点不清楚。您是否在视图中显示了多个“产品”,以及数量相关的文本框和更新购物车的按钮(在这种情况下,您的代码不正确)
-
这是一个产品箱的局部视图,在主视图中为每个产品重复。因此,每个产品都有一个数量文本框和一个添加到购物车按钮。如果不清楚,我稍后会扩展更多代码。现在在我的手机上写作。
标签: javascript jquery angularjs asp.net-mvc