2016-07-20 13 views
0

私は2つの剣道TimePicker持ち:fromTelerik剣道TimePicker最小/最大の設定は無視されます

私は何を達成しようとしたが、これらのTimePickersのリストのオプションドロップダウンの範囲を変更するためにJavaScriptを使用することですto。両方のTimePickersの間隔は00:00から23:30まで30分です。

たとえば、from〜14:30を選択すると、toが開かれたときのオプションは少なくとも14:30になります。両方fromtoは最後のオプションを選択した場合も同様に、一つは(当時fromの最大オプションが除いて、私は私のコードとすべてのものを書かれている20時

大丈夫らしいです、20時まで23:30をtoを選択した場合)、予想される動作はtoのオプションは23:30それ自体です。しかし、実際にはtoのオプションは、23:30から23:00(すなわち、23:30、00:00、00:30、... 23:00)から30分間隔のすべての時間間隔です。

enter image description here

私は午後12時00分に設定し、両方を含む他の多くの「combinbations」を試してみました、すべてがこのような場合を除いて、正しい動作を示しています。私はそれがTelerikコントロールの既知のバグか、私のコードに間違いがあるのだろうか?予想される動作を実装するにはどうすればよいですか?

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; 
 
};

答えて

0

私はサポートチケットを開いていて、Telerikが私に答えた、それは剣道UIのバグのように思えるが判明しました。ここで私は彼らの返信を引用しています:

これはDateTimePickerのバグであると思われ、私は詳細な調査のために開発チームに転送します。当面は、2番目のDateTimePickerの公開イベントを処理し、不要な時間を手動で隠すことができます。

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(); 
     } 
    } 
});