[英]Embedded javascript does not work after async postback from UpdatePanel
[英]Javascript event subscription after UpdatePanel async postback
在 asp.net 页面上的异步回发后,我遇到了 jquery 事件处理程序的问题。 我阅读了这个主题- 这是一个很好的解决方案,但我需要一个单独的 function。 所以我使用jquery 屏蔽插件。
我现在的js代码是:
<script type="text/javascript">
jQuery(document).ready(function () {
var control = $("#txtCustomerPhone");
InitPhonePattern(this, control);
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(InitPhonePattern(this, control));
});
function InitPhonePattern(sender, args) {
$(args[0]).mask("+7 (999) 999-99-99", { completed:
function () {
$('#btnCheckCustomerPhone').click();}
});
}
</script>
如您所见,掩码被初始化了 2 次:在文档 Ready() 上和异步回发之后(在 endRequest() 上)。 但是掩码插件在异步回发后没有映射。
有人明白问题吗? 我将不胜感激!
您的代码中的问题是 jQuery(document).ready 在更新面板之后没有运行,因此您需要将 endRequest 设为 jQuery。
试试这个方法:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);
function InitializeRequest(sender, args) {
}
function EndRequest(sender, args) {
Init();
}
jQuery(document).ready(function(){Init();});
function Init()
{
var control = $("#txtCustomerPhone");
InitPhonePattern(control);
}
function InitPhonePattern(args) {
$(args[0]).mask("+7 (999) 999-99-99", { completed:
function () {
$('#btnCheckCustomerPhone').click();}
});
}
</script>
我想感谢Aristos的帮助和正确的方向:在你的代码中,我只修复了这个字符串:
jQuery(document).ready(Init);//direct transfer function not work;
所以最终的代码是这样的:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(EndRequest);
function EndRequest(sender, args) {
Init();
}
$(document).ready(function () {
Init();
});
function Init() {
var control = $('#txtCustomerPhone');
InitPhonePattern(control);
}
function InitPhonePattern(args) {
$(args).mask("+7 (999) 999-99-99", { completed:
function () {
$('#btnCheckCustomerPhone').click();
}
});
}
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.