我在不同的论坛上不同时间间隔多次提出这个问题,但没有任何帮助我,但希望我再次发布它。请帮忙。
我已将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中。
答案 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)