Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么文本框在回发时失去屏蔽?_C#_Jquery_Asp.net_C# 4.0_Masking - Fatal编程技术网

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

C# 为什么文本框在回发时失去屏蔽?,c#,jquery,asp.net,c#-4.0,masking,C#,Jquery,Asp.net,C# 4.0,Masking,我已经在不同的论坛上多次问过这个问题,但没有任何帮助,希望我能再次发帖。请帮忙 我已将JqueryMasking应用于文本框,即NIC掩蔽。它在最初加载页面时工作,但在发生回发时停止工作,即没有应用掩码。为什么? jQuery(function ($) { $("#txtBoxComplainantCNIC").mask("99999-9999999-9", { placeholder: "" }); }); 文本框: <asp:TextBox ID="tx

我已经在不同的论坛上多次问过这个问题,但没有任何帮助,希望我能再次发帖。请帮忙

我已将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
中,回发是异步进行的(无页面加载),因此您的函数不会第二次启动,您的文本框将丢失其掩码

您可能要做的是注册脚本的这一部分

$("#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
的交互

另外。其中之一就是简单地向客户端代码添加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)
ScriptManager.RegisterStartupScript(Page,Page.GetType,“temp”,“$('#txtboxcomplaminantnic')).mask('99999-999999-9');,False)

页面上写的jquery函数在哪里?哪个事件?如果文本框位于更新面板中,回发可能异步发生,并且jquery函数仅在页面加载时启动。您可能想使用ScriptManager.RegisterStartupScript注册脚本。@techspider先生,在脚本标记内,头部。@BertEvans先生,怎么做?我在这方面完全是幼稚的,先生。我同意@BertEvans,你可以在谷歌上搜索如何添加脚本。让我试试,先生,我会让你know@StackyFlowy请原谅我可能会问一些愚蠢的问题,但您知道背后的代码是什么以及如何修改它吗?具体来说,你知道你的页面加载功能在哪里(如果你已经有了的话)。@StackyFlowy我添加了一个额外的链接,可能会有所帮助。我现在得走了。祝你好运,这是什么?人们几乎不知道这是怎么回事。请编辑您的答案,以便人们能够理解您试图解释的内容。请详细说明答案,让人们知道为什么答案会起作用。