为什么textbox在回发时会丢失屏蔽?

时间:2016-01-11 20:19:21

标签: c# jquery asp.net c#-4.0 masking

我在不同的论坛上不同时间间隔多次提出这个问题,但没有任何帮助我,但希望我再次发布它。请帮忙。

我已将JqueryMasking应用于文本框,即NIC屏蔽。它最初在Page加载时起作用,但在发生回发时停止工作,即不再应用蒙版。为什么?

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>

Textbox位于UpdatePanel中。

2 个答案:

答案 0 :(得分:2)

看起来你的问题是你在页面加载时注册了一个用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。

Here is a link解释RegisterStartupScript及其与UpdatePanel的互动。

此外,several methods for executing code on UpdatePanel postback are discussed here。其中一个就是将pageLoad函数添加到客户端代码中。

pageLoad(){
  $("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" });
}

答案 1 :(得分:0)

在回发页面的控件上使用以下代码:

ScriptManager.RegisterStartupScript(Page, Page.GetType, "temp", "<script type='text/javascript'>$('#txtBoxComplainantCNIC').mask('99999-9999999-9');</script>", False)