bal*_*569 10 c# asp.net jquery updatepanel code-behind
我在将记录插入数据库后调用了一个jquery函数...
ScriptManager.RegisterClientScriptBlock(LbOk, typeof(LinkButton), "json",
"topBar('Successfully Inserted');", true);
Run Code Online (Sandbox Code Playgroud)
我已将其包含在我的母版页中,用于在回发后执行jquery函数,
<script type="text/javascript">
function load() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
function EndRequestHandler()
{
topBar(message);
}
function topBar(message) {
alert(a);
var alert = $('<div id="alert">' + message + '</div>');
$(document.body).append(alert);
var $alert = $('#alert');
if ($alert.length) {
var alerttimer = window.setTimeout(function() {
$alert.trigger('click');
}, 5000);
$alert.animate({ height: $alert.css('line-height') || '50px' }, 200).click(function() {
window.clearTimeout(alerttimer);
$alert.animate({ height: '0' }, 200);
});
}
}
</script>
<body onload="load();">
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用......任何建议..
假设您的代码隐藏在 UpdatePanel 刷新期间运行,您的 EndRequest 处理程序和代码隐藏注册之间是否可能存在不良交互?topBar() 应该被调用两次,一次使用“成功插入”消息,然后使用 EndRequest 中未定义的参数调用一次(除非消息变量是在我们在这里看不到的地方定义的)。
另请记住,$('#alert')可以退回不止一件商品。如果 topBar() 被多次调用,则可能是这种情况。
首先,如何做这样的事情来减轻这种意想不到的副作用:
function topBar(message) {
var $alert = $('<div/>');
$alert.text(message);
$alert.click(function () {
$(this).slideUp(200);
});
$(body).append($alert);
// Doesn't hurt anything to re-slideUp it if it's already
// hidden, and that keeps this simple.
setTimeout(function () { $alert.slideUp(200) }, 5000);
}
Run Code Online (Sandbox Code Playgroud)
这并不能解决 EndRequest 和 Register*Script 都执行 topBar() 的问题,但这应该可以防止它们发生冲突,以便您可以更好地看到发生了什么。
尝试一下,让我们知道这是否会改变情况。
| 归档时间: |
|
| 查看次数: |
10469 次 |
| 最近记录: |