为什么文本框在回发时失去屏蔽

本文关键字:失去 屏蔽 文本 为什么 | 更新日期: 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)