bootstrap-datepicker未在输入中选择更改事件

时间:2013-03-03 07:43:11

标签: jquery javascript-events twitter-bootstrap datepicker

我有一个输入,我想在其中编辑日期。当输入值改变时,我想执行一个回调。

如果我调用函数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),但我无法找到“吞下”更改事件的位置。

3 个答案:

答案 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)

就我而言,只需做两个简单的步骤就足够了:

  1. 将更改事件侦听器添加到输入(当用户键入不同的日期时,它将捕获事件)

    $('#dateInput').on(change, doSomethingOnChange);
    
  2. 添加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