使用 Ajaxtoolkit 屏蔽编辑扩展器和验证器(ASP.NET、Microsoft Edge、Ajaxtoolkit)时退格键不起作用

问题描述 投票:0回答:1

我有 2 个文本框,使用 ajaxtoolkit 的屏蔽编辑扩展器和验证器来使用日历扩展器输入日期,并确保以数据库的正确格式输入日期。由于某种原因,在两个文本框中您无法退格或删除,只能覆盖,类似于键盘上的插入功能。

目前,除了 GitHub 上一些没有回复的非常旧的帖子之外,我还没有看到太多关于此问题的信息,如果您想重现该问题,我正在将 Microsoft Edge 与此 ASP.NET 项目结合使用。

我目前使用的是 Ajax 工具包版本 1.0.20229,因为这不是我自己的网站,而是我工作的企业的网站,所以我无法更新它。

任何帮助或见解将不胜感激,谢谢。

<asp:TextBox ID="tbStartDt" runat="server" width="100" placeholder="00/00/0000" />
      <asp:ImageButton ID="StDateButton" runat="server" ImageUrl="~/images/Calendar_scheduleHS.png" />  
      <ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator8" runat="server" ControlExtender="MaskedEditExtender8"
      ControlToValidate="tbStartDt" Display="Dynamic" InvalidValueMessage="Date is invalid"
      ToolTip="Input a Date">
      </ajaxToolkit:MaskedEditValidator>
      <asp:Label ID="FrDateLabel" runat="server" ForeColor="Red"></asp:Label>
      <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender8" runat="server" Mask="99/99/9999"
        MaskType="Date" TargetControlID="tbStartDt">
      </ajaxToolkit:MaskedEditExtender>
      <ajaxToolkit:CalendarExtender ID="CalendarExtender8" runat="server" CssClass="MyCalendar"
        PopupButtonID="" TargetControlID="tbStartDt">
      </ajaxToolkit:CalendarExtender>
      <ajaxToolkit:CalendarExtender ID="CalendarExtender10" runat="server" CssClass="MyCalendar"
        PopupButtonID="StDateButton" TargetControlID="tbStartDt">
      </ajaxToolkit:CalendarExtender>
asp.net textbox ajaxcontroltoolkit maskededitextender maskededitvalidator
1个回答
0
投票

好的,现在我可以使用新版本的 AjaxToolkit 尝试/测试标记了吗?

当我粘贴您的示例标记时,退格键可以工作文件。

但是,对于一个简单的日期选择器来说,这肯定是相当多的标记。

我的意思是,您可以放入标准文本框,然后设置文本模式=“日期”。

因此,使用此标记:

        <asp:TextBox ID="tbStartDt" runat="server" 
            TextMode="Date"/>

上面将输出正确的 HTML5 兼容日期选择器。所以,不需要面具,也不需要延长日期。

日期格式当然也会尊重客户端(用户的浏览器设置),因为作为一般规则,最终用户应该在他们的计算机上设置和选择他们自己的区域设置 - 而不是您试图强制某些日期格式与您的用户每天拥有和使用的内容 100% 不同。

上面简单标记的结果是这样的:

enter image description here

注意上面的关闭:

未指定图标 - 它是自动为您放置的。

未指定日期格式 - 再次自动且基于用户的区域设置 - 不是您开发人员。

没有 JavaScript,也不需要额外的屏蔽,它就可以工作,并且具有超级有限的标记量。事实上,您只需拖入文本框,然后设置 TextMode="Date" 即可。

我还应该指出,还有一个时间选择器,如果您设置 TextMode="Time",它将出现一个“手表/时间”图标。

所以,总而言之,这是一个超级简单的标记量,不需要掩码,也不需要扩展器,并且根本不需要 AJ 工具包。

仅供参考,粘贴现有标记(并使用最新版本的 AJ 工具包),然后屏蔽等可以工作,退格键也可以工作,但是当我单击文本框时,默认日期似乎“消失”了。

但是,我会考虑使用标准文本框,并设置 TextMode="Date",因为这会产生一个相当不错的日期选择器,并且标记、代码和工作量最少。换句话说,我会考虑通过对文本框进行简单的 TextMode="Date" 设置来尝试内置的日期选择器,看看效果如何。

© www.soinside.com 2019 - 2024. All rights reserved.