2013-05-17 139 views
1

我使用這個代碼:引導的DateTimePicker事件stoppropogation不工作

<script type="text/javascript">  
    $(function() { 

    var picker= $('#timepicker').datetimepicker({ 
     pickDate: false, 
     pickSeconds: false, 
     minView: 2, 
     pick12HourFormat: true, 
     startDate: new Date(<?php echo date('Y,m,d,h,i'); ?>), 
     // endDate: '<?php echo date('Y-m-d h:i'); ?>' 
    }).on('changeDate', function(ev){ 
     var startDate = new Date(); 
     //var df = get_time_difference(ev.localDate,startDate); 
     // alert(startDate.getHours()); 
     // alert(ev.localDate.getHours()); 
     if(startDate.getHours() > ev.localDate.getHours()){ 
      // ev.stopPropagation(); 
      // ev.stopImmediatePropagation(); 
      // ev.preventDefault(); 
      $("#time").val('Error'); 
      //$('#time').unbind('changeDate'); 
      return false; 
      } 
     }); 
    }); 
</script> 

當我拿起當前時間下的時候,它應該顯示錯誤,但收盤後,其顯示所選擇的那個

我想通過更改輸入字段#time的日期來停止事件。

問候,

回答

2

http://tarruda.github.io/bootstrap-datetimepicker/的文檔會告訴你:暴露的唯一事件是「CHANGEDATE」。但是,當你關閉日期/時間彈出式選擇器'隱藏'也會觸發。您可以使用此觸發器再次檢查並(錯誤)設置$(「#time」)。 您需要在hide事件中讀取'$(「#time」)。val()'以獲取輸入的新日期時間。使用new Date($("#time").val())將其轉換爲日期並使其可以應用getHours()

嘗試:

$('#timepicker').datetimepicker().on('hide',function(e){ 
    if(new Date($("#time").val()).getHours()<12) 
        {$("#time").val('Also error');} 
});