javascript - JS DateTimePicker onChange 事件不起作用
问题描述
JS datetimepickeronChange
事件根本不起作用。
我试过OnSelect
, OnClose
, OnChange
, OnHide
,OnChangeMonth
来触发datetimepicker
事件,但它们都不起作用。
<input type="text" class="form-control datetimepicker-input" id="Datetimepicker" data-toggle="datetimepicker" data-target="#Datetimepicker" autocomplete="off" style="width: 200px;" />
$("#Datetimepicker").datetimepicker({
format: 'MMM,YYYY',
defaultDate: today,
onSelect: function () {
alert("It works!");
}
})
$("#Datetimepicker").datetimepicker("change",function(){
alert("It works!")});
$("#Datetimepicker").datetimepicker("changeDate",function(){
alert("It works!")});
我尝试了很多方法,但仍然没有一个有效。我是否需要提供其他一些 js 库才能使其正常工作?感谢你的帮助。
解决方案
正如@Bluety 提到的,您必须使用库提供的事件。
在您的情况下,您可以使用change.datetimepicker
事件。事件处理函数接收旧日期和新日期,可用于您可能需要的任何比较。
$("#Datetimepicker").on("change.datetimepicker", ({date, oldDate}) => {
//Use date and oldDate here
})
另请注意,在您的情况下,输入元素与日期选择器目标相同,这可能导致触发重复事件.......................... ..................................................... .....................
id="Datetimepicker" data-toggle="datetimepicker" data-target="#Datetimepicker"
您可以运行下面的代码段并更改日期以查看一个事件的多个警报。
$("#Datetimepicker").datetimepicker({
format: 'MMM,YYYY',
defaultDate: new Date()
}
);
$("#Datetimepicker").on("change.datetimepicker", ({date, oldDate}) => {
console.log("New date", date);
console.log("Old date", oldDate);
alert("Changed date")
})
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/css/tempusdominus-bootstrap-4.min.css" />
<div id="target" style="position:relative" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" id="Datetimepicker" data-toggle="datetimepicker" data-target="#Datetimepicker" autocomplete="off" style="width: 200px;" />
</div>
为避免这种情况,您可以将父级用作data-target
. 这也是示例在文档中的外观
<div id="target" style="position:relative" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" id="Datetimepicker" data-toggle="datetimepicker" data-target="#target" autocomplete="off" style="width: 200px;" />
</div>
运行下面的代码段并更改日期以查看单个警报。
$("#target").datetimepicker({
format: 'MMM,YYYY',
defaultDate: new Date()
});
$("#target").on("change.datetimepicker", ({
date,
oldDate
}) => {
console.log("New date", date);
console.log("Old date", oldDate);
alert("Changed date")
})
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/js/tempusdominus-bootstrap-4.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tempusdominus-bootstrap-4/5.0.1/css/tempusdominus-bootstrap-4.min.css" />
<div id="target" style="position:relative" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" id="Datetimepicker" data-toggle="datetimepicker" data-target="#target" autocomplete="off" style="width: 200px;" />
</div>
推荐阅读
- php - PHP - 在对象数组中按键查找对象,更新其值
- mongodb - Feathersjs 从 mongodb 获取数据
- javascript - 从显示错误的数据库中检索数据
- android - java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.ImageView.setImageResource (int)”
- vue.js - Vue 计算属性没有像我预期的那样重新计算
- c++11 - 使用 Boost.Asio,如果没有 IO 事件,是否可以添加一个每次事件循环迭代执行一次的处理程序?
- xslt - 结果树片段背后的基本原理是什么?
- node.js - Sequelize 不创建 hasMany 关联,但在 DB 中定义了外键
- python - 如何在 Python 中解决这个猜谜游戏问题?
- python - 单元 LSTM 中的 Keras Gates