【发布时间】:2014-03-19 15:39:27
【问题描述】:
我有一些 jQuery 代码将电话号码掩码应用于表单中的文本字段:
<script type="text/javascript" src="../../../js/jquery.maskedinput.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$.mask.definitions['~'] = '[+-]';
$('.phone').mask('(999) 999-9999');
});
</script>
当用户第一次输入表单或用户刷新页面时,它工作得很好。但是,有一个 DropDownList 允许用户选择不同的送货地址。此 DropDownList 的 AutoPostBack 属性设置为“true”。
<tr id="trAddressBook" runat="server">
<th>Ship To:</th>
<td>
<asp:DropDownList ID="AddressBook" runat="server" Width="200px" DataTextField="Value" DataValueField="Key" AppendDataBoundItems="true" AutoPostBack="true">
<asp:ListItem Text="Billing Address" Value="0" />
<asp:ListItem Text="New Address" Value="-1" />
</asp:DropDownList>
</td>
</tr>
当用户从此 DropDownList 中选择一个选项时,电话掩码 jQuery 代码不再出现在电话号码文本框中。在 Google Chrome 中检查页面时,我没有看到任何错误。
无论用户是否使用DropDownList,是否有办法维护电话掩码代码?
下面是后面代码中的 Page_Load 函数:
protected void Page_Load(object sender, EventArgs e)
{
// DETERMINE IF THE SHIPPING FORM MUST BE INITIALIZED
bool initShipAddress;
if (Page.IsPostBack)
{
// ON POSTBACK, WE ONLY INITIALIZE THE SHIPPING FORM IF THE ADDRESS SELECTION WAS CHANGED
initShipAddress = (Request.Form["__EVENTTARGET"] == AddressBook.UniqueID);
}
else
{
// ON FIRST VISIT, WE INITIALIZE SHIPPING FORM IF THE SHIPPING ADDRESS IS NOT THE BILLING
initShipAddress = (GetShippingAddressId() != _User.PrimaryAddress.Id);
}
if (initShipAddress) InitializeShippingAddress();
}
【问题讨论】:
-
您是否将表单包装在更新面板中?
标签: c# jquery asp.net autopostback