2016-07-20 6 views
0

Ich habe zwei Kendo Timepicker erhalten ignoriert: from und toTelerik Kendo Timepicker Min/Max-Einstellung

Was ich versuche zu erreichen, JavaScript verwenden, um den Bereich der Dropdown-Liste Optionen dieser TimePickers zu ändern. Das Intervall beider TimePickers beträgt 30 Minuten von 00:00 bis 23:30 Uhr.

Zum Beispiel, wenn man from bis 14:30 wählt, dann sind die Optionen, wenn to geöffnet ist, mindestens 14:30 Uhr. Und falls man to bis 20:00 Uhr zu wählen, dann ist die maximale Möglichkeit from 20:00

ist ich meinen Code und alles geschrieben haben außer in Ordnung scheint, wenn beide from und to die letzte Option wählen (23.30), das erwartete Verhalten ist die Optionen to ist nur 23:30 selbst. In Wirklichkeit sind jedoch die Optionen to die gesamte Zeitspanne von 30 Minuten, beginnend von 23:30 bis 23:00 Uhr (dh 23:30, 00:00, 00:30, ... 23:00).

enter image description here

ich habe viele andere „combinbations“ versucht, die sowohl auf 00:00 gesetzt, die alle das richtige Verhalten zeigt, außer diesem Fall. Ich frage mich, ob es sich um einen bekannten Fehler der Telerik-Steuerung handelt oder ob irgendetwas in meinem Code falsch ist? Wie kann ich das erwartete Verhalten implementieren?

var $start = $startSel.data("kendoDateTimePicker"); 
 
var $end = $endSel.data("kendoDateTimePicker"); 
 

 
var start = $startSel.val() == "" ? null : $start.value(); 
 
var end = $endSel.val() == "" ? null : $end.value(); 
 

 
if (start != null) { 
 
    $end.min(comLib.ceilTo30Minute(start)); 
 
} else { 
 
    $end.min(new Date(1900, 0, 1)); 
 
    $end.max(new Date(2099, 11, 31)); 
 
} 
 
if (end != null) { 
 
    $start.max(comLib.floorTo30Minute(end)); 
 
} else { 
 
    $start.min(new Date(1900, 0, 1)); 
 
    $start.max(new Date(2099, 11, 31)); 
 
} 
 

 

 
///////////////////// in comLib 
 

 
function ceilTo30Minute (dateTime) { 
 
    if (dateTime == null) 
 
    return null; 
 
    var min = dateTime.getMinutes() % 30; 
 
    if (min != 0) 
 
    { 
 
    dateTime = publicAccess.addTime(dateTime, 0, -min); 
 
    dateTime = publicAccess.addTime(dateTime, 0, 30); 
 
    } 
 
    return dateTime; 
 
}; 
 
function floorTo30Minute(dateTime) { 
 
    if (dateTime == null) 
 
    return null; 
 
    var min = dateTime.getMinutes() % 30; 
 
    if (min != 0) { 
 
    dateTime = publicAccess.addTime(dateTime, 0, -min); 
 
    } 
 
    return dateTime; 
 
};

Antwort

0

Ich habe ein Support-Ticket geöffnet und Telerik hat mir geantwortet, stellt sich heraus, es wie ein Kendo UI Bug scheint. Hier zitiere ich ihre Antwort:

Dies ist ein Fehler in der Datetime zu sein scheint, und ich werde es in unseren Entwickler-Team für weitere Untersuchungen übermitteln. Zur Zeit Sie das Open-Ereignis des zweiten Datetime umgehen konnte und verstecken manuell die unerwünschten Zeiten:

datetimepicker.bind("open", function(e) { 
    if (e.view === "time" && e.sender.min().toString().indexOf("23:30:00") >= 0) {  
     var times = e.sender.timeView.popup.element.find("li"); 
     for(var i=1; i < times.length; i++){ 
      $(times[i]).hide(); 
     } 
    } 
}); 
Verwandte Themen