为什么文本框在回发时失去屏蔽
本文关键字:失去 屏蔽 文本 为什么 | 更新日期: 2023-09-27 18:29:48
我在不同的论坛上以不同的时间间隔多次提出这个问题,但没有任何帮助,但希望我能再次发布。请帮忙。
我已经将JqueryMasking应用于一个文本框,即NIC屏蔽。它在最初加载页面时工作,但在发生回发时停止工作,即当时不应用掩码。为什么?
jQuery(function ($) {
$("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" });
});
文本框:
<asp:TextBox ID="txtBoxComplainantCNIC" runat="server" onkeypress="return isNumberKeyCNIC(this)" ClientIDMode="Static" placeholder="XXXXX-XXXXXXX-X" MaxLength="15" CssClass="form-control"></asp:TextBox>
文本框位于UpdatePanel中。
您的问题似乎是向JQuery注册了一个函数,以便在加载页面时执行。这就是
jQuery(function ($) {
$("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" });
});
确实如此。然而,这意味着代码将只在页面加载时执行。你的问题是,在UpdatePanel
中,你的回发是异步发生的(没有页面加载),所以你的函数不会第二次启动,你的TextBox失去了它的掩码。
你可能想做的是注册你的脚本的这一部分
$("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" });
在代码隐藏中,以便ASP.NET知道在UpdatePanel
发布时执行它。它看起来像这样:
void Page_Load(object sender, EventArgs e)
{
var setMaskScript = "$('#txtBoxComplainantCNIC').mask('99999-9999999-9', { placeholder: '' });";
ScriptManager.RegisterStartupScript(updatePanelID, this.GetType(), "SetMask", setMaskScript, true);
}
其中updatePanelID
是您的UpdatePanel
的ID。
这里有一个链接解释RegisterStartupScript
及其与UpdatePanel
的交互。
此外,这里还讨论了在UpdatePanel回发时执行代码的几种方法。其中之一就是简单地将pageLoad函数添加到客户端代码中。
pageLoad(){
$("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" });
}
在返回页面的控件上使用以下代码:
ScriptManager.RegisterStartupScript(Page, Page.GetType, "temp", "<script type='text/javascript'>$('#txtBoxComplainantCNIC').mask('99999-9999999-9');</script>", False)