2017-04-11 73 views
1

我注意到Bootstrap datepicker發生意外的事件觸發。它只發生在另一個函數/處理程序內部。Bootstrap datepicker意外地觸發另一個事件處理程序內的更改事件

通常setDate不應該觸發事件,它不會!除非我將它包裝到另一個函數/處理程序中。試圖瞭解差異並擺脫不必要的事件觸發。

請幫忙。

//$('.set-date-button').click(function(event) { 
    event.preventDefault(); 
    var startDate = '01/01/2017'; 
    $('.start .date').datepicker('setDate', startDate); 
//}); When commented, change event doesn't fire, when uncommented - unexpected change event fires. 

https://jsfiddle.net/xek22wpq/

使用changechangeDate沒有任何區別。

$('.set-date-button').click(function(event) { 
 
    event.preventDefault(); 
 
    var startDate = '01/01/2017'; 
 
    $('.start .date').datepicker('setDate', startDate); 
 
}); 
 

 
$(document).on('change', '.start .date', function() { 
 
    alert('fired!'); 
 
});
<link href="https://rawgit.com/uxsolutions/bootstrap-datepicker/master/dist/css/bootstrap-datepicker.standalone.min.css" rel="stylesheet"/> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script src="https://rawgit.com/uxsolutions/bootstrap-datepicker/master/dist/js/bootstrap-datepicker.min.js"></script> 
 
<button class='set-date-button'>Set Date</button> 
 
<div class='start'> 
 
    <input class='date' placeholder='mm/dd/yyyy'> 
 
</div>

+0

請注意,您鏈接[eonasdan-的DateTimePicker(https://eonasdan.github.io/bootstrap-datetimepicker/)文檔,而在你的小提琴和你正在使用的[bootstrap-datepicker](https://bootstrap-datepicker.readthedocs.io/en/latest/index.html)的片段中。第一個組件既沒有'datepicker'也沒有'setDate'方法。小提琴和片段都不起作用。請編輯您的問題,指定您正在使用的組件。 – VincenzoC

+0

錯誤的鏈接,已修復。 –

回答

1

因爲當你創建你的改變事件的日期已經設置。如果相反的順序,它會觸發change事件:jsfiddle.net/xek22wpq/9

相關問題