Ajax.BeginForm淡出不起作用
Ajax.BeginForm fade out not working
我有:
@using (Ajax.BeginForm("actionToDo", new AjaxOptions
{
HttpMethod = "post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "updatediv",
OnBegin = "$('#updatediv').fadeOut()",
OnComplete = "$('#updatediv').hide().fadeIn()"
}))
{
<div id='updatediv'>
</div>
}
淡入可以正常工作,但问题是当我提交Ajax请求时,它不会淡出。它只是消失了,然后在新内容中逐渐消失。在使用简单警报进行测试后,"OnBegin"似乎直到删除旧内容后才发生,这与文档相矛盾:"获取或设置要在页面更新前立即调用的javascript函数的名称。"
知道为什么会发生这种事吗?
好吧,问题是当你调用fadeout时,已经太晚了。表单提交已经发生,这意味着div已经消失(由于替换方法的性质)。请记住,这些事件发生得很快。您需要做的是在提交表单之前强制淡出。对此有各种解决方案(许多已经存在堆栈溢出,包括使用e.preventDefault),但我更喜欢隐藏真正的提交按钮,添加一个假的按钮并使用它来进行淡出,然后使用setTimeout触发延迟的表单提交。我还添加了一个外部div,以在替换的div消失时保持固定的屏幕高度。
@using (Ajax.BeginForm("actionToDo", new AjaxOptions
{
HttpMethod = "post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "updatediv",
OnComplete = "$('#updatediv').hide().fadeIn()"
}))
{
<div style="height:20px;">
<div id='updatediv'>
text to replace</div>
</div>
<input id='realsubmit' style='display:none;' type="submit" />
<input id='fakesubmit' type="button" value="submit" onclick ="$('#updatediv').fadeOut('slow'); setTimeout(function () { $('#realsubmit').click(); }, 1000);" />
}
相关文章:
- 添加/删除类淡入淡出不起作用
- 淡入淡出脚本不起作用
- 纯 JavaScript 淡入淡出 - 淡入不起作用
- 淡入淡出链接悬停不起作用
- 淡出加载然后淡入不起作用
- jQuery图像淡入淡出不起作用
- jQuery父对象(“tr”)淡出不起作用
- 淡入淡出和AppendTo不起作用-jQuery
- jquery 和 safari 7 - slide切换和淡入淡出切换不起作用
- function(){如果淡出,则追加}不起作用
- 淡入淡出 JavaScript 中的图像不起作用
- 为什么这种淡出不起作用
- JQuery 幻灯片向上和淡出“不起作用”
- 淡入和淡出功能不起作用
- 淡入/淡出功能不起作用
- 淡出功能在所有浏览器中都不起作用
- 为什么这种淡入淡出效果不起作用
- jquery淡出并重定向在IE中不起作用
- 淡入淡出css动画不起作用
- Ajax.BeginForm淡出不起作用