bootstrap datetimepicker事件stoppropagation不工作

时间:2013-05-17 04:52:23

标签: jquery twitter-bootstrap datetimepicker

我正在使用此代码:

<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的日期。

的问候,

1 个答案:

答案 0 :(得分:2)

http://tarruda.github.io/bootstrap-datetimepicker/上的文档告诉您:暴露的唯一事件是'changeDate'。但是当你关闭日期/时间弹出选择器'hide'时也会触发。您可以使用此触发器再次检查并在出错时重新设置$(“#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');}
 });