簡體   English   中英

ASP.NET 4.5 文本框文本模式“日期”回發問題

[英]ASP.NET 4.5 Textbox Textmode 'Date' Postback Issue

在我的表單上,我有一個 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="return false;" onpaste="return false"

如下將它們添加到您的文本框標記中

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

我找到了一個使用內置 TextMode="Date" 的解決方案。 在進行更改后,不要使用 AutoPostBack="true" 回發,而是使用 onBlur 事件。

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

在頁面加載中添加: tbFrom.Attributes.Add("onBlur", "__doPostBack('tbFrom','');")

它將觸發文本框的常規 OnTextChanged 事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM