2009-10-22 3 views
0

Я вижу мешок моего продукта ViewShoppingCart.ascxИспользование Ajax с MVC

<%= Ajax.ActionLink("Посмотреть карзину", 
    "ViewShoppingCart", "Products", 
    new AjaxOptions { UpdateTargetId = "content" })%> 

И я хочу, чтобы изменить количество в ViewShoppingCart.ascx.

<%using (Ajax.BeginForm("UpdateItem", "Products", 
       new AjaxOptions { UpdateTargetId = "content" })) 
    {%> 
     <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%> 
     <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), new { size = 2, 
      maxlength = 2, onchange = "this.form.submit();" })%> 
<%} %> 

Когда я ввожу новое значение, и я нажимаю «enter», все работает так, как ожидалось. Если я нажимаю «Tab» вместо «Enter» вместо ajax появляется новое окно

Что я делаю неправильно?

ответ

0

Один из способов будет добавить кнопку отправки в форму (она может быть скрыта) и вызывать действие щелчка так, что это вызовет асинхронную форму обратной передачи:

<%using (Ajax.BeginForm("UpdateItem", "Products", 
     new AjaxOptions { UpdateTargetId = "content" })) {%> 
    <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%> 
    <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), new { size = 2, 
     maxlength = 2, onchange = "document.getElementById('button').click();" })%> 
    <input type="submit" id="button" style="display: none" /> 
<% } %> 

И если вы этого не сделаете как идея положить скрытые кнопки это также работает, но один может найти уродливое:

<%using (Ajax.BeginForm(
    "UpdateItem", 
    "Products", 
    new AjaxOptions { 
     UpdateTargetId = "content" 
    }, 
    new { 
     id = "myForm" 
    })) 
{ %> 
    <%=Html.Hidden("productid", shoppingCartItem.Product.ProductID.ToString())%> 
    <%=Html.TextBox("Quantity", shoppingCartItem.Quantity.ToString(), 
     new { 
      size = 2, 
      maxlength = 2, 
      onchange = "var event = new Object(); event.type='submit'; $get('myForm').onsubmit(new Sys.UI.DomEvent(event));" 
     }) 
    %> 
<% } %> 

Не по теме: упростить вашу жизнь с ненавязчивый JavaScript и jQuery.

+0

Большое спасибо, все работает – stranger

Смежные вопросы