2013-02-08 78 views
2

如何防止触发日历,不仅通过点击图标,而是整个标签?在这种情况下,如果我试图直接做到这一点,没有儿童选择它不起作用。如何防止儿童在整个跨度上发生点击事件?

My implementation

HTML:

<div id="datetimepicker1" class="input-append date"> 
    <input type="text" disabled="true"></input> 
    <span class="add-on disabled"> 
     <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> 
    </span> 
</div> 

JS:

$(function() { 
     $('#datetimepicker1').datetimepicker(); 

     $(".disabled").children().bind('click', function() { 
      return false; 
     }); 
    }); 

回答

1

编辑:http://jsfiddle.net/vg4xa/1/

你必须设置日期选择器初始化之前事件处理程序,并停止事件传播:

$(function() { 
    $('.disabled').bind('click', function(e){ 
     e.stopImmediatePropagation(); 
    }); 

    $('#datetimepicker1').datetimepicker(); 
}); 
+3

甚至更简单:'$(“。disabled i”)。bind('click',false);'。 – 2013-02-08 13:38:12

+0

感谢提示 – soju 2013-02-08 13:38:48

+0

谢谢。我试过这个解决方案,仍然是相同的结果。 – roza 2013-02-08 13:45:04

0

我知道这个答案不会为主题的工作,但在这个问题说明,有一个datepicker和下面的代码为我工作,以防止跨度或日历图标,日期选择器打开点击

if (disable) { 
     $('#datetimepicker1').datepicker('_detachEvents'); 
     $('#datetimepicker1').datepicker('_detachSecondaryEvents'); 
    } else { 
     $('#datetimepicker1').datepicker('_attachEvents'); 
     $('#datetimepicker1').datepicker('_attachSecondaryEvents'); 
    }