Mik*_*kka 4 javascript asp.net jquery asynchronous maskedtextbox
我在asp.net页面上的异步回发后遇到了jquery事件处理程序的问题.我读了这个主题 - 这是一个很好的解决方案,但我需要一个单独的功能.所以我正在使用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>
Run Code Online (Sandbox Code Playgroud)
如您所见,掩码初始化了2次:在文档Ready()和异步回发之后(在endRequest()上).但是在异步回发后没有映射掩码插件.
有人明白问题吗?我很感激你的帮助!
你的代码中的问题是jQuery(document).ready不会在更新面板之后运行,所以你需要从jQuery中生成endRequest.
试试这种方式:
<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>
Run Code Online (Sandbox Code Playgroud)
Mik*_*kka -1
我想对Aristos的帮助和正确的方向表示感谢!在你的代码中我只修复了这个字符串:
jQuery(document).ready(Init);//direct transfer function not work;
Run Code Online (Sandbox Code Playgroud)
所以最终代码如下所示:
<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>
Run Code Online (Sandbox Code Playgroud)