0

我有一个带有 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>
4

2 回答 2

0

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

复制:

  • 添加两个指向单个文本框的 MaskedEditExtender。
  • 启动浏览器并在文本框中输入数据。每个字符将加倍/复制。

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

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

快乐编码!

于 2015-05-22T18:27:59.640 回答
-1

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

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

于 2015-04-10T23:04:30.630 回答