javascript datei Testen Sie, ob das Element bereits über jQuery-Datumsauswahl verfügt




jquery get title of element (4)

Wow kann nicht glauben, dass ich diese verpasst habe. Zeile 108 von ui.datepicker.js:

/* Class name added to elements to indicate already configured with a date picker. */
markerClassName: 'hasDatepicker',

Also muss ich nur nach hasClass('hasDatepicker') . Dies scheint der direkteste Weg zu sein. Außerdem prüft diese Anweisung, ob der Datepicker gerade geöffnet ist (für alle, die daran interessiert sind):

if ($("#ui-datepicker-div").is(":visible") && $("#ui-datepicker-div").html() != "") {
    // datepicker is open. you need the second condition because it starts off as visible but empty
}

Ich habe ein Formular mit vielen Eingabeelementen. Einige sind Datumsfelder mit einem angehängten jQuery UI Datepicker alraedy:

$("#someElement").mask("9?9/99/9999").datepicker({showOn: 'button', buttonText:'Click here to show calendar', duration: 'fast', buttonImageOnly: true, buttonImage: /images/calicon.gif' });

Dann habe ich einen Schlüsselbefehl an diese Funktion gebunden:

function openCalendar() {
    var selection = document.activeElement;

    // { Need to test here if datepicker has already been initialized 
        $(selection).datepicker("show");
    // }
}

Dies funktioniert hervorragend für Elemente, auf denen bereits der Datumsauswahlpunkt liegt. Jedoch werden alle anderen Felder einen Javascript-Fehler verursachen. Ich frage mich, die beste Möglichkeit zu testen, ob Datepicker bereits in diesem Feld initialisiert wurde.


Answer #1

Ich habe einen anderen Fall. Mein Skript kopiert letzte Tabellenelemente einschließlich Datumsauswahl.

Die jquery wird nicht funktionieren, da das kopierte Element markiert ist, dass es "hadDatepicker" hat.

Um datepicker im neuen Element zu aktivieren, entferne diesen Klassennamen und initiiere ihn wie folgt.

 $("#yournewelementid").attr("class","your-class-name"); 
 $("#yournewelementid").datepicker();    

Answer #2

Eine grundlegende Lösung besteht darin, ein Attribut zum Zeitpunkt des Datepicker-Anhangs festzulegen und dann dafür zu testen:

$("#someElement").mask("9?9/99/9999")
.datepicker({showOn: 'button', buttonText:'Click here to show calendar', duration: 'fast', buttonImageOnly: true, buttonImage: /images/calicon.gif' })
.attr("data-calendar", "true");

Dann könnten Sie tun:

if ($(selection).attr("data-calendar") == "true")
    $(selection).datepicker("show");

Gibt es einen direkteren Weg?


Answer #3

Das war meine Lösung :)

if(typeof jQuery.fn.datepicker !== "undefined")






datepicker