javascript - ASP.NET 4.5 文本框文本模式 'Date' 回发问题

标签 javascript c# asp.net date textbox

在我的表单上,我有一个 TextBox 控件,其 TextMode 属性设置为“日期”,并且(为了完整性)我所在地区的正常日期格式是“dd/MM/yyyy”(英国):

<asp:TextBox ID="tbFrom" runat="server" TextMode="Date" AutoPostBack="True" OnTextChanged="DatesChanged"></asp:TextBox>

当用户更改日期时,我想在后面的代码中执行某些操作,因此需要 AutoPostback 和 OnTextChanged 属性设置。

现在,当用户使用日历弹出控件选择日期时,此功能可以正常工作,但当用户手动输入日期时,控件会在按要求完全输入日期之前回发。

例如,用户输入“01”表示日,“01”表示月,然后开始输入“2017”表示年份。一旦用户在年份部分键入“2”,就会触发 TextChanged 事件,控件会回发(完全有效的)日期“01/01/0002”,然后控件就会失去焦点。

我知道,从技术上讲,这是正常工作的,但它会导致用户无法完成所需的日期,除非他们以非常具体的方式输入各个部分(年、日、月)实例)。

我的直接问题是“是否可以禁用此控件的手动日期输入?”。不过,我也欢迎任何有关如何保留手动输入但以允许用户首先输入完整日期的方式处理回发的建议。

非常感谢。

最佳答案

是的,这可以通过使用来完成

onkeypress="返回 false;"onpaste="返回 false"

将它们添加到您的文本框标记中,如下所示

        <asp:TextBox ID="tbFrom" runat="server" onkeypress="return false;" 
    onpaste="return false" TextMode="Date" AutoPostBack="True" 
OnTextChanged="DatesChanged"></asp:TextBox>

关于javascript - ASP.NET 4.5 文本框文本模式 'Date' 回发问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736694/

相关文章:

c# - 方法错误无法计算表达式

c# - 这个语句在 C# 中是什么意思?

javascript - 如何在 asp.net 中通过单击按钮来执行 C# 代码?

.net - 使用.net创建WSRP Portlet

javascript - AEM 6.3 : Sling Servlet registered with resourceType

c# - 在客户端检查 WCF 调用的 HttpWebRequest?

javascript - 使用 Javascript 和 PHP 加载第一页/单页时客户端的 UTC 偏移量

asp.net - 单击自定义后退按钮返回上一页

javascript - 有人仍然对旧浏览器隐藏 JS 吗?

javascript - 取消音频淡出然后淡入 - Web Audio API