Почему текстовое поле теряет маскировку при обратной передаче?
Я задавал этот вопрос много раз через разные промежутки времени на разных форумах, но ничто не помогло мне, но я надеюсь, что выложу его снова. Пожалуйста помоги.
Я применил 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.
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
,
Вот ссылка, которая объясняет 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)