2017-03-07 6 views
0

Ich habe diese asp net textbox, die ich validieren möchte, so dass Benutzer amerikanische Zeit oder ohne Doppelpunkt eingeben können, zum Beispiel: "10:00 PM" oder "1230 AM" seit meinem Code hinter benötigt es eine gültige Datetime: "JJJJ-MM-TT HH: MM" Ich brauche es auf der Clientseite formatiert werden. Wie soll ich das machen?validieren datetime asp net textbox mit jquery/javascript

ASPX:

<asp:TextBox Style="float: right;" Width="50" CssClass="TellusTextBox" ClientIDMode="Static" ID="txtArrivalTime" runat="server" /> 

<asp:TextBox Style="float: right;" Width="50" CssClass="TellusTextBox" ClientIDMode="Static" ID="txtDepartureTime" runat="server" /> 

JavaScript:

function ValidateDateTime(value) { 
    //logic here 
} 

Antwort

1
<asp:TextBox Style="float: right;" Width="100" CssClass="TellusTextBox" ClientIDMode="Static" ID="txtArrivalTime" runat="server" type="time" placeholder="hrs:mins" value="" pattern="^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$" required="required" /> 
0

Wenn Ihr Code-behind es erfordert eine gültige Datetime zu sein, validieren es dann auf der Server-Seite als auch. Javascript kann einfach ausgeschaltet/umgangen/manipuliert werden. Es ist schön für die Verbesserung der Benutzerfreundlichkeit, aber Sie können es nicht vertrauen. Der Code-Behind muss die Validierung erneut durchführen, wenn das Formular gesendet wird, wenn Sie sicher sein wollen, dass es ein korrekter Wert ist.

ASP.NET Forms bietet Validator-Steuerelemente, die Ihnen sowohl eine Client- als auch eine Serverseite-Validierung bieten, ohne dass Sie beide Codeabschnitte separat schreiben und pflegen müssen.

Dafür können Sie einen RegularExpressionValidator verwenden, der reguläre Ausdrücke verwendet, um die Zeichen in der Zeichenfolge zu finden. Das wird mal in dem beide 12-Stunden-Format entspricht, die Sie oben gezeigt, einschließlich dem AM/PM am Ende:

<asp:RegularExpressionValidator runat="server" ID="val_reg_ArrivalTime" ControlToValidate="txtArrivalTime" ValidationExpression="^(0[1-9]|1[0-2])(:){0,1}[0-5][0-9] (AM|PM)$" ErrorMessage="Time must be in this format: hh:mm AM/PM" CssClass="errormessage" SetFocusOnError="true" Display="Dynamic" /> 

Alternativ könnte es sein, zuverlässige und klarer und einfacher/kürzer für die Nutzer zu geben, stattdessen ein 24-Stunden-Format zu akzeptieren (dh hh: mm). Subsitute diesen regulären Ausdruck statt für 24-Stunden-Zeiten:

^([0-9]|(0|1)[0-9]|2[0-3]):[0-5][0-9]$ 

Mit diesen beiden, gibt es keine Notwendigkeit, einen benutzerdefinierten .NET oder JavaScript-Code zu schreiben - die Validierung Kontrolle übernimmt es für Sie.

Erfahren Sie mehr über die verfügbaren Validierungskontrollen hier: https://msdn.microsoft.com/en-us/library/debza5t0.aspx N.B. Zukünftige Referenz enthält auch einen "benutzerdefinierten" Validator für, wenn die Standard-Steuerelemente nicht tun, was Sie brauchen. Es gibt Ihnen ein Framework, in das Sie benutzerdefinierten JS- und C# -Code einfügen können, aber es wird auf die gleiche Weise behandelt wie die Standardsteuerelemente.