2 votes

Select Range Of DateTimePicker ne fonctionne pas correctement

Existe-t-il un moyen par défaut dans kendo DatePicker pour s'assurer que la date To est toujours supérieure ou égale à la date From. Voici le code que j'ai essayé :

Le code de sélection de ma gamme :

function startChange() {
    var startDate = startdatetimepicker.value(),
            endDate = enddatetimepicker.value();

    if (startDate) {
        startDate = new Date(startDate);
        startDate.setDate(startDate.getDate());
        enddatetimepicker.min(startDate);
    } else if (endDate) {
        startdatetimepicker.max(new Date(endDate));
    } else {
        endDate = new Date();
        startdatetimepicker.max(endDate);
        enddatetimepicker.min(endDate);
    }
}

function endChange() {
    var endDate = enddatetimepicker.value(),
            startDate = startdatetimepicker.value();

    if (endDate) {
        endDate = new Date(endDate);
        endDate.setDate(endDate.getDate());
        startdatetimepicker.max(endDate);
    } else if (startDate) {
        enddatetimepicker.min(new Date(startDate));
    } else {
        endDate = new Date();
        startdatetimepicker.max(endDate);
        enddatetimepicker.min(endDate);
    }
}

J'obtiens cette erreur : "la propriété 'value' de l'objet 3 n'est pas une fonction".

6voto

OnaBai Points 22137

Votre startdatepicker est un HTML input object et il n'y a pas value méthode mais property . Vous devriez donc utiliser : startdatetimepicker.value .

Néanmoins, je recommande de changer en utilisant le sélecteur de date et d'heure de Kendo UI :

function startChange() {
    var startDate = k_startdatetimepicker.value(),
            endDate = k_enddatetimepicker.value();

    if (startDate) {
        startDate = new Date(startDate);
        startDate.setDate(startDate.getDate());
        k_enddatetimepicker.min(startDate);
    }
    else if (endDate) {
        k_startdatetimepicker.max(new Date(endDate));
    }
    else {
        endDate = new Date();
        k_startdatetimepicker.max(endDate);
        k_enddatetimepicker.min(endDate);
    }
}

function endChange() {
    var endDate = k_enddatetimepicker.value(),
            startDate = k_startdatetimepicker.value();
    console.log(endDate, startDate);

    if (endDate) {
        endDate = new Date(endDate);
        endDate.setDate(endDate.getDate());
        k_startdatetimepicker.max(endDate);
    }
    else if (startDate) {
        k_enddatetimepicker.min(new Date(startDate));
    }
    else {
        endDate = new Date();
        k_startdatetimepicker.max(endDate);
        k_enddatetimepicker.min(endDate);
    }
}

k_startdatetimepicker y k_enddatetimepicker sont :

var k_startdatetimepicker = $("#startdatetimepicker").kendoDateTimePicker({
    change: startChange,
    showSecond: true,
    dateFormat: "dd-mm-yy",
    timeFormat: "HH:mm:ss",
    format: "dd-MM-yy HH:mm:ss"
}).data("kendoDateTimePicker");

var k_enddatetimepicker = $("#enddatetimepicker").kendoDateTimePicker({
    change: endChange,
    showSecond: true,
    dateFormat: "dd-mm-yy",
    timeFormat: "HH:mm:ss",
    format: "dd-MM-yy HH:mm:ss"
}).data("kendoDateTimePicker");

Exécuter JSfiddle aquí

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X