首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bootstrap Datepicker on change触发3次

Bootstrap Datepicker on change触发3次
EN

Stack Overflow用户
提问于 2014-03-24 23:43:18
回答 10查看 25.8K关注 0票数 21

嗨,我一直试图获得一个引导日期选择器的日期,并一直能够,但它似乎触发了3次。注意:这不是jquery日期选择器,而是引导日期选择器。

使用这个日期选择器:https://github.com/eternicode/bootstrap-datepicker,而不是旧版的eyecon.ro。

 $(".date-picker").on("change", function(e) {
      contents = $(this).val();
      id = $(this).attr('id');
      console.log("onchange contents: " + contents);
      console.log("onchange id: " + id);

 });

HTML:

<input id="start_date" type="text" data-date-format="yyyy-mm-dd" class="date-picker form-control" />

除了更改之外,我还使用了其他一些选项,例如

$('.date-picker').datepicker().change(function(){};

但这并没有关闭日期选择器,希望有一个简单的解决方案。thx

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2014-07-28 20:28:23

它没有解决这个问题,但我是使用datepicker通过ajax post发送的,所以这3个更改事件给我带来了问题-第三个事件总是失败。即使文档中说要使用changeDate事件,但在我看来,触发输入标记的change事件3次似乎是不对的。该值不会改变3次!

我写了一个简单的“去抖动”函数来解决这个问题。没有修复这个问题-这是由于小部件的方法: setValue (508行)、_setDate:(1048行)和setValue (508行) (version 1.3.0)触发了多个更改事件。

 var lastJQueryTS = 0 ;// this is a global variable.
 ....
 // in the change event handler...
    var send = true;
if (typeof(event) == 'object'){
    if (event.timeStamp - lastJQueryTS < 300){
        send = false;
    }
    lastJQueryTS = event.timeStamp;
}
if (send){
    post_values(this);
}

它非常简单,只需找到jquery 'event',并确保300ms窗口中的值被忽略即可。在我的测试中,这一切都发生在30毫秒左右。

票数 9
EN

Stack Overflow用户

发布于 2014-03-24 23:53:06

您应该使用"changeDate“事件。例如:

var datePicker = $('.date-picker').datePicker().on('changeDate', function(ev) {
    //Functionality to be called whenever the date is changed
});

有关此活动的更多信息,请查看文档here

票数 38
EN

Stack Overflow用户

发布于 2016-06-18 03:55:41

正如一些人已经提到的,使用这个:

$('#calendar').on("changeDate", function() {

});

诀窍是使用changeDate而不是change

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22614041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档