【问题标题】:Why textbox loses masking upon postback ?为什么文本框在回发时会丢失掩码?
【发布时间】:2016-04-16 06:45:27
【问题描述】:

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

我已将 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 函数仅在页面加载时触发。您可能希望使用 ScriptManager.RegisterStartupScript 注册您的脚本。
  • @techspider 先生,在脚本标签内,头部。
  • @BertEvans 先生该怎么做?我对这个先生完全天真。
  • 我同意@BertEvans,你可以google一下如何添加脚本

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


【解决方案1】:

看起来您的问题是您已经使用 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: "" });
}

【讨论】:

  • 让我试试先生,会告诉你
  • @StackyFlowy 请原谅我提出了一些愚蠢的问题,但是您知道背后的代码是什么以及如何修改它吗?具体来说,您是否知道您的 Page_Load 函数在哪里(如果您已经有的话)。
  • @StackyFlowy 我添加了一个可能有帮助的附加链接。我得先走了。祝你好运。
【解决方案2】:

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

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

【讨论】:

  • 这是什么?人们几乎说不出这是怎么回事。请编辑您的答案,以便人们可以理解您要解释的内容。请详细说明答案,以便人们知道答案为何有效。
猜你喜欢
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 2013-05-01
  • 2019-08-13
  • 2020-06-05
  • 2019-07-22
相关资源
最近更新 更多