2 Stimmen

jQuery UI datetimepicker und ASP.NET CompareValidator für DataTypeCheck

Ich verwende ein ASP.NET-Textfeld mit dem jQuery UI datepicker. Das Textfeld ermöglicht Bearbeitungen, so dass der Benutzer ein Datum manuell eingeben oder einen vorhandenen Eintrag löschen kann. Ich habe einen CompareValidator hinzugefügt, um eine Datentypprüfung für das Textfeld durchzuführen, und dies führt zu einem Fehler nach der Auswahl eines Datums mit dem Datepicker. Der Fehler tritt bei der clientseitigen ASP.NET-Validierung auf:

Microsoft JScript runtime error: 'length' is null or not an object

der Fehler tritt in ValidatorOnChange auf. Wie kann ich das beheben? Ist es möglich, datepicker mit den ASP.NET Validator-Steuerelementen zu verwenden?

Mein Aufschlag ist:

<asp:Label runat="server" AssociatedControlID="uxInstallDate">Install Date</asp:Label>
<asp:TextBox ID="uxInstallDate" runat="server" Columns="10" />
<asp:CompareValidator runat="server" ControlToValidate="uxInstallDate" Operator="DataTypeCheck" Type="Date" Text="*" ErrorMessage="Install Date must be a date." Display="Dynamic" />

Beachten Sie, dass das fehlende ID-Attribut im CompareValidator beabsichtigt ist und das Hinzufügen dieses Attributs keinen Unterschied macht. Meine jQuery-Initialisierung ist:

$(document).ready(function() {
    $("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true });
});

7voto

Jamie Ide Punkte 46985

Ich glaube, ich habe eine Lösung gefunden. Es handelt sich um einen Fehler, der im IE auftritt, nicht im Firefox (ich habe keine anderen Browser getestet). Die Lösung war, die onSelect-Methode in der Initialisierung zu überschreiben:

$("#<%= uxInstallDate.ClientID %>").datepicker({ changeMonth: true, onSelect: function() { } });

Ich habe eine Beschreibung des Problems und der Lösung gefunden aquí und einer alternativen Lösung aquí .

0voto

Ghislain Proulx Punkte 100

Auf der Grundlage der Lösung von Jamie und der Stellvertreter Lösung, die er anbietet, hier ist mein Workaround, um diesen seltsamen Fehler zu umgehen, der nur im IE auftritt.

Ich gehe davon aus, dass ein durch das Datepicker-Steuerelement ausgewähltes Datum ein gültiges Datum ist, so dass ich die Meldung oder das Fehlerbild des CompareValidators ausblende, wenn es sichtbar ist.

$(".myControl").datepicker({
    onSelect: function() {
        if ($.browser.msie) {
            if ($(this).next("span").css("display") != "none") {
                $(this).next("span").css("display", "none");
            }
        }
        else {
            $(this).trigger('change');
        }
    }
 });

Hoffentlich hilft das

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X