在确认对话框中单击“是”或“否”后,OnSuccessForm()函数不会触发。关于如何在继续之前停止onBeginForm()的任何想法?
我的MVC3表格
@using (Ajax.BeginForm("Edit", @ViewContext.Controller.ValueProvider.GetValue("controller").RawValue, new AjaxOptions
{
UpdateTargetId = Model.Title.Replace(" ", "") + "Form",
InsertionMode = InsertionMode.Replace,
OnBegin = "onBeginForm",
OnSuccess = "OnSuccessForm",
OnFailure = "showFaliure"
}))
{
@Html.ValidationSummary(true)
@Html.RenderStandardEditor("Edit " + Model.Title)
}
这是我的JavaScript示例代码
<script type="text/javascript">
var confirmation = false;
function onBeginForm(ajaxContext)
{
$.confirm({
'title': 'Confirmation',
'message': 'Confirm?',
'buttons': {
'Yes': {
'class': 'cyan',
'action': function ()
{
confirmation = true;
}
},
'No': {
'class': 'gray',
'action': function ()
{
confirmation = false;
}
}
}
});
}
function OnSuccessForm(ajaxContext)
{
if (confirmation == true)
{
//DO SOMETHING
}
}
function showFaliure(ajaxContext)
{
//THROW ERROR
}
</script>
答案 0 :(得分:1)
我相信你错误地使用了onSuccess功能。只有在成功发布数据后才会调用该函数。因此,无论您在确认框中选择了什么,数据都会以任一方式发布,然后您的确认框仅确定在发布后是否有任何数据。这真的是你想要的吗?
至于为什么你的onSuccessForm没有被击中,我所能提供的只是尝试调试它的方法。 showFaliure会被调用吗?使用firebug控制台是否会发布数据?如果你注释掉onBeginForm函数中的所有内容,那么onSuccessForm会被调用吗?