2017-05-02 7 views
0

Auf meinem Formular habe ich ein TextBox-Steuerelement mit der TextMode-Eigenschaft auf "Datum" und (der Vollständigkeit halber) das normale Datumsformat für meine Region ist 'TT/MM/JJJJ '(UK):ASP.NET 4.5 Textbox Textmodus 'Datum' Postback Problem

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

Wenn der Benutzer das Datum ändert ich etwas in dem Code hinter damit die Autopostback tun will und OnTextChanged Eigenschaftseinstellungen.

Jetzt funktioniert das gut, wenn der Benutzer das Kalender-Popup-Steuerelement verwendet, um ein Datum auszuwählen, aber wenn der Benutzer das Datum manuell eingibt, wird die Steuerung zurück gebucht, bevor das Datum vollständig wie erforderlich eingegeben wurde.

Beispiel: Der Benutzer gibt "01" für den Tag, "01" für den Monat ein und beginnt dann mit der Eingabe von "2017" für das Jahr. Sobald der Benutzer im Jahresteil "2" eingibt, wird das TextChanged-Ereignis ausgelöst, das Steuerelement meldet sich mit dem (perfekt gültigen) Datum "01.01/0002" zurück und das Steuerelement verliert den Fokus.

Ich verstehe, dass dies technisch so funktioniert, wie es sollte, aber es bewirkt, dass ein Benutzer das erforderliche Datum nicht ausfüllen kann, es sei denn, sie geben die verschiedenen Abschnitte auf ganz bestimmte Weise ein (Jahr, Tag, Monat) zum Beispiel).

Meine direkte Frage wäre 'ist es möglich, manuelle Datumseingabe für dieses Steuerelement zu deaktivieren? '. Ich würde jedoch auch alle Vorschläge begrüßen, wie man die manuelle Eingabe behält, aber das Postback so behandelt, dass ein Benutzer zuerst das vollständige Datum eingeben kann.

Vielen Dank.

Antwort

1

Ja, kann dies geschehen, indem

onkeypress="return false;" onpaste="return false"

Fügen Sie sie Ihrer Textbox Markup als

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

folgt so toll gearbeitet - dank Webruster! Ich hatte immer noch ein Problem mit den Auf-Ab-Pfeilen, aber ich entfernte sie einfach mit der Antwort, die hier gegeben wurde http://StackOverflow.com/Questions/31157892/How-to-Remove-Up-Down-arrow-keys -von-asptextbox-texmodedate –

+0

@JohnP was wir implementiert haben, ist anstelle von 'Textmode = Date' wir haben Jquery datepicker verwendet, da dies auch den Benutzer aus dem Pop-up des Controls auswählt. Auf diese Weise haben wir das Problem gemildert, versuchen zu sehen Wenn Sie es benutzen können, hat es mehr Funktionen, versuchen Sie es !! – Webruster

+0

ja, gute Idee. Ich werde das einen Wirbel geben, danke. –