Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
附加到jQuery日期选择器模糊事件_Jquery_Jquery Ui_Datepicker_Jquery Events_Blur - Fatal编程技术网

附加到jQuery日期选择器模糊事件

附加到jQuery日期选择器模糊事件,jquery,jquery-ui,datepicker,jquery-events,blur,Jquery,Jquery Ui,Datepicker,Jquery Events,Blur,我正在开发一个用于文本框的jQuery插件,我希望它能够与使用文本框的jQueryUI小部件(如datepicker)一起使用。这给我带来了问题,因为似乎datepicker上的模糊事件是在实际设置值之前抛出的 我使用的一种解决方法是在执行代码之前设置超时,以允许设置日期选择器值的时间。见以下代码: $(this).blur(function() { // $(this).val() == "" var elem = $(this); setTimeout(functio

我正在开发一个用于文本框的jQuery插件,我希望它能够与使用文本框的jQueryUI小部件(如datepicker)一起使用。这给我带来了问题,因为似乎datepicker上的模糊事件是在实际设置值之前抛出的

我使用的一种解决方法是在执行代码之前设置超时,以允许设置日期选择器值的时间。见以下代码:

$(this).blur(function() {
    // $(this).val() == ""
    var elem = $(this);
    setTimeout(function() {
        //elem.val() != ""
    },100);
});
我不确定这种变通方法是否是解决问题的最佳方法,甚至不确定它是否始终有效。如果我将超时设置为10毫秒而不是100毫秒,那么它就不起作用了——我担心代码执行速度是否慢,不管是什么原因,100可能并不总是足够的


有谁能想出更好的办法来解决这个问题吗

在datepicker中有几个事件可以与
onSelect
onClose
关联,其中的
这是作为datepicker选择器的输入。
您还可以使用datepicker
ui
参数获取值

$(selector).datepicker({
     onClose:function(evt, ui){             
          $(this).myPlugin('someMethod');
     })
})

最后,我的解决方案是,如果有问题的文本框被日期选择器使用(通过检查
hasDatepicker
类),则动态地钩住
onClose
事件。这样做的问题是,无法像通常那样绑定到事件,因为日期选择器只能将一个函数附加到其特定事件。为了解决这个问题,我检查是否已经附加了一个函数,如果是,请在我的代码之后调用它:

var elem = $(this);
var someFunction = function() {
    //elem.val() != ""
}
if (elem.hasClass('hasDatepicker')) {
    var onClose = elem.datepicker('option','onClose');
    elem.datepicker('option','onClose', function() {
        someFunction();
        if (onClose) { onClose(elem.val()); }
    });
} else {
    elem.bind('blur',someFunction);
}

这是一种更简单的方法:

$('#element').datepicker({
    onClose: function() {
        $(this).trigger('change');
    }
});


$('#element').bind('change',function(){
    // someFunction();
});
$(“.datepickerSelect”).datepicker('option','onSelect',function(){…});