我有一个输入,我想在其中编辑日期。当输入值改变时,我想执行一个回调。
如果我调用函数datepicker(来自bootstrap-datepicker https://github.com/eternicode/bootstrap-datepicker),我就不能再挂钩到change事件了。 (奇怪的是,其他事件似乎工作正常)
这是我到目前为止所尝试的:
(使用骨干)
events: {
'changeDate :input' : 'onUpdateField'
},
或直接使用jquery
$('#Fundacion').on('change', this.onUpdateField);
如果我只评论以下一行
$('#Fundacion').datepicker({
autoclose : true,
[...]
该事件被调用。
另一方面,调用changeDate evet,但仅在使用鼠标或箭头更改日期时。我想在用户输入不同的日期时捕获该事件。
我试着查看来源(https://github.com/eternicode/bootstrap-datepicker/blob/master/js/bootstrap-datepicker.js),但我无法找到“吞下”更改事件的位置。
答案 0 :(得分:7)
这不是推荐的方法,而是一种肮脏的解决方法。只需在500毫秒后(或根据您的要求)检查日期字段。
var current = $('.transaction-date').val();
function keep_checking() {
if (current != $('.transaction-date').val()) {
alert('change happened');
current = $('.transaction-date').val();
}
setTimeout(keep_checking, 500);
}
keep_checking();
<强>更新强>
如果您使用以下库,则会在更改日期时触发事件'changeDate'。外观与eternicode datepicker非常相似
http://www.eyecon.ro/bootstrap-datepicker/
使用示例:
jQuery('#dp1').datepicker().on('changeDate', function(ev){
alert('date is changed');
});
答案 1 :(得分:1)
就我而言,只需做两个简单的步骤就足够了:
将更改事件侦听器添加到输入(当用户键入不同的日期时,它将捕获事件)
$('#dateInput').on(change, doSomethingOnChange);
添加datepicker changeDate事件(当使用鼠标或箭头更改日期时,它将从第一步触发更改事件)
input.datepicker().on('changeDate', function(){
$(this).trigger('change');
});
答案 2 :(得分:0)
不确定它是否回答了问题,但问题似乎已知
显然,在离开输入焦点时,他们还无法确定是否已更改该值。
检查:
https://github.com/eternicode/bootstrap-datepicker/pull/295 https://github.com/eternicode/bootstrap-datepicker/issues/241