JQuery 时钟选择器在输入时未触发更改事件
JQuery clockpicker not triggering change event on input
在我正在处理的代码库中,有这种类型的回调绑定,每当任何输入发生更改时,都必须发生一些事情
$(document.body).on('change', '.input-sm', function (){
...
})
问题是,一些输入短信是通过时钟选择器更改的,它不会触发"更改"事件。我将如何做到这一点?理想情况下,我希望时钟选择器触发更改事件。
http://jsfiddle.net/4zg3w5sj/7/
编辑:回调一次与时钟选择器绑定到多个输入,所以我不能使用输入变量来触发更改事件(除非我显式迭代我猜的输入)
您可以使用时钟选择器回调
beforeHourSelect:在用户发出 小时选择
afterHourSelection:用户发出 小时选择
beforeDone:在时间写入之前触发的回调函数 输入
afterDone:时间写入输入后触发的回调函数
input.clockpicker({
autoclose: true,
afterDone: function() {
input.trigger("change");
}
});
我已经解决了问题
该插件触发了更改事件,但它们使用 triggerHandler 而不是触发器,这意味着您无法在正文中添加侦听器,您必须直接侦听输入
// Hours and minutes are selected
ClockPicker.prototype.done = function() {
raiseCallback(this.options.beforeDone);
this.hide();
var last = this.input.prop('value'),
value = leadingZero(this.hours) + ':' + leadingZero(this.minutes);
if (this.options.twelvehour) {
value = value + this.amOrPm;
}
this.input.prop('value', value);
if (value !== last) {
this.input.triggerHandler('change');
if (! this.isInput) {
this.element.trigger('change');
}
}
if (this.options.autoclose) {
this.input.trigger('blur');
}
raiseCallback(this.options.afterDone);
};
在这里看到一个修复
var input = $('#input-a');
var value = input.val();
// bind multiple inputs
$('.myinput').clockpicker({
autoclose: true,
afterDone: function() {
console.log("test");
}
});
// in the actual code it's not tied to an id but to a non-unique class
// does not trigger if changed by clock-picker
$(".myinput").on('change', function(){
console.log("!!!!")
})
相关文章:
- 分派点击事件并保留击键修饰符
- 模糊事件的Javascript测试
- keyup事件处理程序更改焦点不适用于快速键入
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 如何使Javascript动态html表及其上的事件
- 使用类从一个标记中双击事件
- 如何在未直接触发的情况下停止事件
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 对iPad上的点击事件反应缓慢
- 事件和状态
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- 从控制器返回后Ajax启动事件激发
- 如何从画布上的某个移动事件中获取X和Y
- Jquery:未触发select事件
- JsFiddle上的鼠标事件不起作用
- 谷歌分析/Mixpanel/等.确定时钟错误时的事件时间戳
- JQuery 时钟选择器在输入时未触发更改事件
- 基于本地时钟的Javascript事件触发器
- 简单服务器发送事件:时钟在 30 分钟后停止