Jquery datepicker更改事件触发器和输入的默认更改事件
我有datepicker
$('.inp').datepicker(); $(".inp").on("change",function (){ console.log('inp changed'); });
当我第一次更改’.inp’时手动输入一个值,然后立即点击datepicker的打开日历。 我得到两个’更改’事件监听器。 首先来自手动更改,然后来自datepicker更改。 我怎么能避免这个?
设置输入readOnly
,它将帮助您仅通过图标更改字段的值。
然后使用onSelect
获取所选日期,如下所示:
$(function() { $(".inp").datepicker({ onSelect: function(dateText, inst) { // alert(dateText); } }); });
尝试使用onSelect函数,如:
$(function() { $( ".datepicker" ).datepicker({ onSelect: function() { //your code here }});
当他们从日历中选择日期而非他们正在键入时,将触发此操作。
您可以让onSelect触发文本字段上的更改事件。 这种方式通过文本框或日期选择器编辑日期的行为相同。
$('.inp').datepicker({ onSelect: function() { return $(this).trigger('change'); } ); $(".inp").on("change",function (){ console.log('inp changed'); }
如果您使用引导日期选择器,则可以执行以下操作:
$('.datepicker').datepicker() .on('changeDate', function(e){ # `e` here contains the extra attributes });
有关更多详细信息,请参阅: Bootstrap Datepicker事件
谢谢! 每个人,但我不能将字段只读一个,这是要求。 所以我不得不重新研究自己。 所以我发布我的最终解决方案。 我解除了150毫秒的绑定,然后重新绑定。 我为此制作了一个jquery插件
function myfunc(that){ $(that).one('change', function(){ var that = this; setTimeout(function(){myfunc(that);}, 150); //some logic } ) } myfunc(".inp");
谢谢大家,这就是我用过的东西,
function myfunction(x,x2){ var date1 = new Date(x); var MyDateString; MyDateString = date1.getFullYear()+ '/' + ('0' + (date1.getMonth()+1)).slice(-2) + '/' + ('0' + date1.getDate()).slice(-2); x2.value= MyDateString; }
x,是datepicker值,x2是datepicker对象
如果你使用jquery的日期选择器,则不需要压延事件。 你可以在文本框“textchanged”上触发事件