是什么导致带有MaskedEditExtender的文本框重复字符?

时间:2013-08-14 18:03:35

标签: asp.net textbox ajaxcontroltoolkit maskedtextbox maskededitextender

我有一个带有MaskedEditExtender的文本框。当我输入文本时,我得到的输出是混乱的,一些数字重复,其他数字丢失。如果我删除了MaskedEditExtender,文本框会正常运行,但当然不允许我为文本框使用输入掩码。我已经尝试了MaskedEditExtender的各种选项组合,但是除了删除MaskedEditExtender之外什么都没有解决问题。可能是什么导致了这个?我可以添加或删除一些选项来修复此问题吗?

这是一个例子:我所拥有的一个领域是带有面具的电话领域(999)999-9999。显示表单时,在输入任何内容之前,它看起来像这样:

(___) ___-____

这是所需的行为。但是,当我输入一个数字时,例如1234567890,它显示为:

112_)233455660987_-____

1,2,3,5和6是重复的,7,8,9,0以相反的顺序出现。更不用说面具似乎被忽略了。

如果您需要更多信息,请与我们联系。我真的想知道问题是什么以及如何解决它。如果我的问题被立即降级,我就不能这样做。谢谢!

添加完整代码:

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="CtlCheckOutAddressConfirm.ascx.cs"    Inherits="App_Controls_CtlCheckOutAddressConfirm" %>
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
    <script language="javascript" type="text/javascript">
    function checkClearZip() 
    {
        var bx = document.getElementById('<%=TxtZip.ClientID %>').value

        if (bx == "_____") 
        {
            document.getElementById('<%=TxtZip.ClientID %>').value = "";
        }
    }

    function checkClearPhone() 
    {
        var bx = document.getElementById('<%=TxtPhone.ClientID %>').value

        if (bx == "(___) ___-____") 
        {
            document.getElementById('<%=TxtPhone.ClientID %>').value = "";
        }
    }
    script>

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

<asp:UpdatePanel runat="server" ID="updCart" UpdateMode="Always">
 <ContentTemplate>
  <div>
        <table>

           <tr><td align="right">
           <font style=" font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height:20px; color: #575a61;">*Phone</font>
           </td><td align="left">
           <asp:TextBox ID="TxtPhone" MaxLength="15" onblur="checkClearPhone();" runat="server" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Height="28px" Width="300px" Font-Size="X-Large"></asp:TextBox><br />                  
           <ajaxToolkit:MaskedEditExtender ID="MskPhone" runat="server"
               TargetControlID="TxtPhone"
               Mask="(999) 999-9999"
               MessageValidatorTip="true"
               OnFocusCssClass="MaskedEditFocus"
               OnInvalidCssClass="MaskedEditError"
               MaskType="None"
               DisplayMoney="None"
               AcceptNegative="None" 
               ClearMaskOnLostFocus="false" />
               </td></tr>
           <tr><td align="right">
           <font style=" font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height:20px; color: #575a61;">*E-mail</font>
           </td><td align="left">
           <asp:TextBox ID="TxtEmail" MaxLength="50" runat="server" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px" Height="28px" Width="300px" Font-Size="X-Large"></asp:TextBox><br />                  
           </td></tr>
           </table>
           <div class="spacer"></div>

           <center><asp:ImageButton runat="server" ID="BtnContinue" ImageUrl="~/images/Buttons/bebtn-save.gif" OnClick="BtnContinue_Click" /></center>
       <asp:HiddenField ID="HdnMerch" runat="server" />
       <asp:HiddenField ID="HdnAdd" runat="server" />
  </div> </ContentTemplate>  
</asp:UpdatePanel>

2 个答案:

答案 0 :(得分:0)

我自己也经历过这个问题。

复制:

  • 添加两个指向单个文本框的MaskedEditExtenders。
  • 启动浏览器并在文本框中输入数据。每个角色都会加倍/重复。

解决方案(至少对我而言):

  • 看来您的ASPX文件很干净 - 没有我能看到的重复文件。请尝试以下项目:
  • 在CodeBehind中查找动态构建的MaskedEditExtender,其TargetControlID指向相关文本框。
  • 注意:这可以直接在MasterPage,同一页面的CodeBehind中完成,或者这些页面中的一个在另一个执行此功能的区域中调用一个模糊定义的函数(就像我的问题一样)。

快乐的编码!

答案 1 :(得分:-1)

这是一年之后,但对于那些可以受益的人来说也是如此。

原因可能是页面的部分回发。请注意您正在使用的ScriptManager。尝试隔离代码并查看是否发生。