Подписка на события Javascript после асинхронной обратной передачи UpdatePanel
У меня проблема с обработчиком событий jquery после асинхронной обратной передачи на странице asp.net. Я читаю эту тему - это хорошее решение, но мне нужна отдельная функция. Поэтому я использую плагин в маске 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()). Но плагин маски не отображается после асинхронной обратной передачи.
Кто-то понимает проблему? Буду благодарен за помощь!
2 ответа
Хочу так сказать спасибо 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>
Проблема в вашем коде заключается в том, что jQuery(документ).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>