jQuery datepicker funktioniert nur einmal und wird beim zweiten Mal nicht angezeigt

8

ASP.NET MVC3 / jQuery 1.9.1 / jQuery UI 1.10.2

Ich habe eine Seite, auf der ich nach dem Klick auf Ajax.ActionLink einen modalen Dialog öffne. In diesem Dialog habe ich ein Eingabefeld und ein datepicker damit verbunden. Wenn ich den Dialog zum ersten Mal öffne, kann ich auf die Schaltfläche für den Datums-Picker klicken (oder innerhalb des zugehörigen Eingabefelds, so dass er den Fokus erhält, showOn wird auf both gesetzt) ​​und der Datepicker wird wie erwartet angezeigt. Ich kann, während der modale Dialog geöffnet ist, so oft ich möchte, den Datepicker jedes Mal anzeigen. Wenn ich den modalen Dialog schließe (über ein angehängtes $("ui-widget-overlay").click(function(){...}); und dann wieder öffne, funktioniert der Datepicker nicht mehr, egal ob ich auf den Button oder in das zugehörige Eingabefeld klicke.

Ich habe versucht, den jQuery-Code zu debuggen, und beide Male sind die Codezeilen, die ausgeführt werden, gleich (und obwohl der datepicker beim zweiten Öffnen des Dialogs nicht angezeigt wird, werden die jQuery-Methoden ausgelöst) Ich kann im Debugger sehen. Ich bin völlig ratlos und die Methoden, die in diesem Beitrag beschrieben werden, haben nur geholfen Es wird angezeigt, wenn der Dialog das erste Mal geöffnet wird. Ein weiterer Beitrag scheint nur mit einem Missverständnis zu tun zu haben showOn Einstellung funktioniert.

Ich habe auch versucht, den Datepicker über $("#datepicker").datepicker("destroy"); zu zerstören, wenn ich den Dialog vergebe - ohne Erfolg. Irgendwelche Ideen?

Aktualisieren

Auf der "rufenden Seite":

%Vor%

Die Controller-Aktion ist sehr einfach und wie folgt:

%Vor%     
Gorgsenegger 18.04.2013, 06:49
quelle

7 Antworten

21

Nach mehr Debugging und Versuchen, jQuery-Ereignisse zu verfolgen, habe ich getestet, ob das Problem mit jQuery UI 1.9.2 existierte, was nicht der Fall war. Dann habe ich die relevanten Codezeilen datepicker verglichen, die nicht zu viele tatsächliche Änderungen beinhalteten.

Um es kurz zu machen, das Problem, das in meiner Frage oben beschrieben wurde, konnte behoben werden, indem eine einzelne Codezeile von 1.10.2 auf die Version 1.9.2 zurückgesetzt wurde:

1.10.2 verursacht Probleme

%Vor%

1.9.2. Version, funktioniert wie erwartet

%Vor%

Ich bin mir immer noch nicht sicher, warum dieses Verhalten existiert, aber es scheint eine relativ seltene Konstellation zu sein. Als Anmerkung: Ich habe% code_% nicht "reinitialisiert", nachdem ich den Popup-Dialog geöffnet habe (oder die datepicker über AJAX anfordere), daher ist es ausreichend, eine einzige Skriptquelle als Teil von PartialView zu haben. Hoffe, das hilft jemand anderem.

    
Gorgsenegger 22.04.2013, 14:16
quelle
12

Ich hatte das gleiche Problem und löste es mit

%Vor%

nach dem Schließen und Löschen des Popups.

    
Giuseppe Abbracciavento 06.08.2014 15:33
quelle
4

Was für mich funktionierte war -

Wenn ich innerhalb des Dialogs mehrere Eingänge mit der Klasse datepicker habe, dann

%Vor%

Grundsätzlich, um die Klasse hasDatepicker vor der Initialisierung von datepicker wieder zu entfernen.

Ich war in Version 1.8.18 von jquery.ui.datepicker

    
Vandesh 16.05.2014 13:35
quelle
2
  

Es wird über einen Ajax.ActionLink geöffnet, der eine Ziel-ID (div) über die UpdateTargetId-Eigenschaft aktualisiert. Die Controller-Aktion, die den Inhalt für den modalen Dialog zurückgibt, fragt einen Web-Service ab und gibt dann eine Teilansicht mit einem aufgefüllten Modell zurück.

Dann müssen Sie die Datepiciker-Funktion erneut aufrufen, nachdem die Teilansicht ausgefüllt wurde ... innerhalb der Callback-Funktion von ajax (falls Sie diese verwenden) ...

%Vor%

datepikcker kann keine Funktion für dynamisch hinzugefügtes Element aufrufen ... da Ihr Ziel-Div zum Zeitpunkt des ersten Aufrufs des Datepickers nicht vorhanden ist ... müssen Sie die Datepicker-Funktion erneut für if to aufrufen arbeite für zusätzliches Ziel DIV

aktualisiert

%Vor%     
bipen 18.04.2013 06:58
quelle
2

Ich hatte ein ähnliches Problem, aber was mir passiert ist, dass beim zweiten Laden des Dialogs der Datapicker den Wert nicht angenommen hat.

Das Problem war, dass ich ein zweites Mal den Dialog geladen habe und diese Probleme verursachen. Die Lösung bestand darin, den Dialog nach dem Schließen zu entfernen, etwa wie folgt:

%Vor%

Ich hoffe, das hilft jedem!

    
DaniCE 13.03.2014 11:06
quelle
0

Ich wollte den Datumswähler nach dem modalen Schließen neu initialisieren, da die Werte, die während des ersten Versuchs für die Einstellung der Daten ausgewählt wurden, noch vorhanden waren. Also ich weiß nicht warum, aber der folgende Code funktioniert nicht für mich.

%Vor%

Die obige Zeile in der Dokumentation hat nicht geholfen!.

Es folgt etwas, was ich versucht habe, d. h. die Datumsauswahlobjekte zu zerstören und neu zu initialisieren.

%Vor%

Hier ist meine Initialisierungsfunktion:

%Vor%

Hoffnung Das hilft! RA

    
Rudresh Ajgaonkar 20.06.2016 00:34
quelle
0
___ answer25164481 ___

Ich hatte das gleiche Problem und löste es mit

%Vor%

nach dem Schließen und Löschen des Popups.

    
___ qstntxt ___

ASP.NET MVC3 / jQuery 1.9.1 / jQuery UI 1.10.2

Ich habe eine Seite, auf der ich nach dem Klick auf %code% einen modalen Dialog öffne. In diesem Dialog habe ich ein Eingabefeld und ein %code% damit verbunden. Wenn ich den Dialog zum ersten Mal öffne, kann ich auf die Schaltfläche für den Datums-Picker klicken (oder innerhalb des zugehörigen Eingabefelds, so dass er den Fokus erhält, %code% wird auf %code% gesetzt) ​​und der Datepicker wird wie erwartet angezeigt. Ich kann, während der modale Dialog geöffnet ist, so oft ich möchte, den Datepicker jedes Mal anzeigen. Wenn ich den modalen Dialog schließe (über ein angehängtes %code% und dann wieder öffne, funktioniert der Datepicker nicht mehr, egal ob ich auf den Button oder in das zugehörige Eingabefeld klicke.

Ich habe versucht, den jQuery-Code zu debuggen, und beide Male sind die Codezeilen, die ausgeführt werden, gleich (und obwohl der datepicker beim zweiten Öffnen des Dialogs nicht angezeigt wird, werden die jQuery-Methoden ausgelöst) Ich kann im Debugger sehen. Ich bin völlig ratlos und die Methoden, die in diesem Beitrag beschrieben werden, haben nur geholfen Es wird angezeigt, wenn der Dialog das erste Mal geöffnet wird. Ein weiterer Beitrag scheint nur mit einem Missverständnis zu tun zu haben %code% Einstellung funktioniert.

Ich habe auch versucht, den Datepicker über %code% zu zerstören, wenn ich den Dialog vergebe - ohne Erfolg. Irgendwelche Ideen?

Aktualisieren

Auf der "rufenden Seite":

%Vor%

Die Controller-Aktion ist sehr einfach und wie folgt:

%Vor%     
___ answer16076438 ___
  

Es wird über einen Ajax.ActionLink geöffnet, der eine Ziel-ID (div) über die UpdateTargetId-Eigenschaft aktualisiert. Die Controller-Aktion, die den Inhalt für den modalen Dialog zurückgibt, fragt einen Web-Service ab und gibt dann eine Teilansicht mit einem aufgefüllten Modell zurück.

Dann müssen Sie die Datepiciker-Funktion erneut aufrufen, nachdem die Teilansicht ausgefüllt wurde ... innerhalb der Callback-Funktion von ajax (falls Sie diese verwenden) ...

%Vor%

datepikcker kann keine Funktion für dynamisch hinzugefügtes Element aufrufen ... da Ihr Ziel-Div zum Zeitpunkt des ersten Aufrufs des Datepickers nicht vorhanden ist ... müssen Sie die Datepicker-Funktion erneut für if to aufrufen arbeite für zusätzliches Ziel DIV

aktualisiert

%Vor%     
___ qstnhdr ___ jQuery datepicker funktioniert nur einmal und wird beim zweiten Mal nicht angezeigt ___ answer22376626 ___

Ich hatte ein ähnliches Problem, aber was mir passiert ist, dass beim zweiten Laden des Dialogs der Datapicker den Wert nicht angenommen hat.

Das Problem war, dass ich ein zweites Mal den Dialog geladen habe und diese Probleme verursachen. Die Lösung bestand darin, den Dialog nach dem Schließen zu entfernen, etwa wie folgt:

%Vor%

Ich hoffe, das hilft jedem!

    
___ answer37913261 ___

Ich wollte den Datumswähler nach dem modalen Schließen neu initialisieren, da die Werte, die während des ersten Versuchs für die Einstellung der Daten ausgewählt wurden, noch vorhanden waren. Also ich weiß nicht warum, aber der folgende Code funktioniert nicht für mich.

%Vor%

Die obige Zeile in der Dokumentation hat nicht geholfen!.

Es folgt etwas, was ich versucht habe, d. h. die Datumsauswahlobjekte zu zerstören und neu zu initialisieren.

%Vor%

Hier ist meine Initialisierungsfunktion:

%Vor%

Hoffnung Das hilft! RA

    
___ tag123jqueryui ___ jQuery UI ist ein kuratierter Satz von Benutzeroberflächeninteraktionen, Effekten, Widgets und Designs, die auf der jQuery-JavaScript-Bibliothek basieren. ___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ answer3346939 ___

btw ich werde versuchen, die Art und Weise zu erklären, wie ich es gelöst habe, weil ich denke, dass dies einfacher ist.

Ich bin kein Experte in diesem Bereich, also vergib mir, wenn ich nicht die richtigen Begriffe benutze, um es zu erklären.

Wenn du 2 Orte auf der gleichen Seite hast, möchtest du Datepicker laden, du musst die Funktion duplizieren:

%Vor%

und fügen Sie der zweiten Stelle die Klasse "datepicker2" hinzu, um den Datepicker aufzurufen. es funktioniert, fast für mich

Ich hoffe, es hilft jemandem, wenn Sie das für eine dumme Lösung halten, lassen Sie es mich wissen und ich werde es entfernen

Schönen Tag noch!

    
___ answer16149429 ___

Nach mehr Debugging und Versuchen, jQuery-Ereignisse zu verfolgen, habe ich getestet, ob das Problem mit jQuery UI 1.9.2 existierte, was nicht der Fall war. Dann habe ich die relevanten Codezeilen %code% verglichen, die nicht zu viele tatsächliche Änderungen beinhalteten.

Um es kurz zu machen, das Problem, das in meiner Frage oben beschrieben wurde, konnte behoben werden, indem eine einzelne Codezeile von 1.10.2 auf die Version 1.9.2 zurückgesetzt wurde:

1.10.2 verursacht Probleme

%Vor%

1.9.2. Version, funktioniert wie erwartet

%Vor%

Ich bin mir immer noch nicht sicher, warum dieses Verhalten existiert, aber es scheint eine relativ seltene Konstellation zu sein. Als Anmerkung: Ich habe% code_% nicht "reinitialisiert", nachdem ich den Popup-Dialog geöffnet habe (oder die %code% über AJAX anfordere), daher ist es ausreichend, eine einzige Skriptquelle als Teil von %code% zu haben. Hoffe, das hilft jemand anderem.

    
___ tag123datepicker ___ Ein Datepicker ist ein Benutzeroberflächenelement in vielen Frameworks, das es einem Benutzer ermöglicht, ein Datum und manchmal auch Zeit zu wählen, oft über einen visuellen Kalender. ___ answer23696504 ___

Was für mich funktionierte war -

Wenn ich innerhalb des Dialogs mehrere Eingänge mit der Klasse %code% habe, dann

%Vor%

Grundsätzlich, um die Klasse %code% vor der Initialisierung von %code% wieder zu entfernen.

Ich war in Version 1.8.18 von jquery.ui.datepicker

    
___
user5512898 01.11.2015 15:40
quelle

Tags und Links