在AutoPostBack = true上触发jQuery代码?

时间:2014-03-19 15:39:28

标签: c# jquery asp.net autopostback

我有一些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属性设置为&#34; true。&#34;

   <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();
    }

1 个答案:

答案 0 :(得分:2)

我可能错了,因为我使用ASP.NET已经很长时间了,但我相信您只需将$(document).ready(function () { ... });更改为$(window).load(function() { ... });

$(window).load(function () {
    $.mask.definitions['~'] = '[+-]';
    $('.phone').mask('(999) 999-9999');
});

如果失败,ASP.NET会在每次加载页面时执行一个名为pageLoad的函数:

function pageLoad() {
    $.mask.definitions['~'] = '[+-]';
    $('.phone').mask('(999) 999-9999');
};