2012-01-05 76 views
0

guys。整个上午我一直在为我的问题寻找答案,但我没有取得任何成功。ASP.NET MVC 3 Ajax.BeginForm使用jQuery的问题在Chrome上提交

这里的问题 - >我是通过一个复选框提交了Ajax.BeginForm,使用jQuery:

<% using (Ajax.BeginForm("Edit", "Products", 
                 new AjaxOptions 
                 { 
                  HttpMethod = "POST", 
                  LoadingElementId = "divLoading", 
                  UpdateTargetId = "divProducts" 
                 })) 
     {%> 
     <%: Html.HiddenFor(mod => Model.ProductId) %> 
    <%:Html.CheckBoxFor(mod => Model.ShowInactiveProducts, 
               new 
                { 
                 onchange = 
                "jQuery('#ShowInactiveProducts').closest('form').submit(); return false;" 
                })%> <%:Products_Resource.ShowInactive%> 
    <% 
     }%> 

此代码工作在Firefox罚款,但在Chrome它触发两次提交,其中第一次Request.IsAjaxRequest()返回true,第二次返回false。

我读过很多关于unobstrusive Ajax和东西的文章,但他们都没有为我工作。

有趣的是,当我使用的输入型提交,它就像一个魅力...

没有人有我有什么可以做任何线索来解决这个?

谢谢!

回答

1

试试这个:去掉复选框的onchange属性,并做到这一点通过jQuery的:

<script> 
    $("#mycheckbox").change(function(){ 
    "jQuery('#ShowInactiveProducts').closest('form').submit(); 
    }); 
</script> 

如果不工作,尝试创建一个隐藏的提交按钮,使复选框,单击它的变化。

+0

尽管这不是最漂亮的解决方案,但“B计划”却奏效!我做了一个隐藏的提交按钮!感谢您的回答,我非常担心以正确的方式使ajax工作,我忘了在解决方法中考虑! – thiagoprzy 2012-01-05 14:14:56