-1
をリフレッシュしません:入力値は、私は[更新]ボタンを持つ買い物かごを持ってcorreclty
私は数量を変更した場合、価格フィールドをリフレッシュする必要があります。
ありボタン、および数量入力フィールドがある:
@if (Model != null)
{
foreach (var item in Model)
{
<tr class="bg-danger btnDelete" data-id="1">
<td>@item.Name</td>
<td>@item.SupplierNo</td>
<td>
<input class="form-control quantity" id="quantity" value="1" name="quantity" min="1" max="100" type="number" style="width:100px;" required>
</td>
<td style="color:red">@item.Price</td>
<td class="actions" data-th="">
<button class="btn btn-info btn-sm" onclick="test(this)" id="refreshBasket" [email protected]><i class="fa fa-refresh"></i></button>
<button class="btn btn-danger btn-sm" onclick="deleteFromBasket(this)" id="deleteFromBasket" [email protected]><i class="fa fa-trash-o"></i></button>
</td>
</tr>
}
}
これはJavaScript関数である:
<script>
function test(obj) {
var $button = $(obj);
var testId = $button.data("id"); //reading the data-id of clicked button
var quantity = $('#quantity').val();
var UrlSettings = {
url: '@Url.Action("RefreshBasket", "Purchase")'
}
$.ajax({
url: UrlSettings.url,
data: { 'id': testId, 'quantity': quantity },
type: "post",
cache: false,
success: function (data) {
location.reload();
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
これはコントローラである:
public ActionResult RefreshBasket(int id, string quantity)
{
List<Product> cart = (List<Product>)Session["ShoppingCart"];
Product product = productRepository.GetProductByID(id);
if (cart == null)
{
return new JsonResult() { Data = new { Status = "ERROR" } };
}
List<ProductCategoriesVM> cartList = ConvertShoppingCartListToProductCategories(cart);
if (product != null)
{
ProductCategoriesVM item = cartList.Where(p => p.ID == product.Id).FirstOrDefault();
double parsedValue;
double.TryParse(item.Price, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("nl-NL"), out parsedValue);
double result = parsedValue * int.Parse(quantity);
item.Price = result.ToString("0.00");
var itemFromSession = cart.Where(p => p.Id == item.ID).FirstOrDefault();
itemFromSession.AtpPrice = item.Price;
}
return View("PurchaseProduct", cartList);
}
問題は、私は買い物リストで変更が時々量値は時々量の値が最後に変更された値のままで、1のままであることです。時々正しく動作します。私は何が間違っているのか分からないのですか?ご覧のとおり、私はこのような値を得ようとします:var quantity = $( '#quantity')。val();これを解決する別の方法がありますか?ありがとう!
は、あなたの答えをいただき、ありがとうございます。 obj.closest( 'tr')を使用すると、obj.parentsは関数ではありません。find( '。quantity')。val();私は同じエラーを取得します:obj.closestは関数ではありません。何が問題なのか考えていますか? – Orsi
@Orsi申し訳ありません$ buttonとobjを交換してください –
ありがとうございます!それは完璧に動作します:) – Orsi