Jquery ui 输入失去焦点时jquery关闭日期选择器

Jquery ui 输入失去焦点时jquery关闭日期选择器,jquery-ui,jquery-plugins,datepicker,Jquery Ui,Jquery Plugins,Datepicker,我在输入中使用datepicker,我的最后一个字段是datepicker输入,验证后我想在表单中的另一个输入上设置焦点,但问题是datepicker没有关闭,即使它没有焦点 在另一个输入字段上设置焦点时,如何关闭日期选择器? (我试过了。datepicker(“隐藏”);但它对我不起作用) 更新: 这是我的代码: $(function() { $( "#test_date" ).datepicker({ dateFormat: "dd/mm/yy"

我在输入中使用datepicker,我的最后一个字段是datepicker输入,验证后我想在表单中的另一个输入上设置焦点,但问题是datepicker没有关闭,即使它没有焦点

在另一个输入字段上设置焦点时,如何关闭日期选择器? (我试过了。datepicker(“隐藏”);但它对我不起作用)

更新: 这是我的代码:

$(function()
    {    $( "#test_date" ).datepicker({
                dateFormat: "dd/mm/yy"
        });
        });
 //when i call my function:
 $( "#test_date" ).datepicker("hide"); //---> this does not work!

提前感谢。

编辑问题以使用最新版本的jqueryUI

当元素因用户交互而失去焦点时,JqueryUi会自动关闭日期选择器,但在使用JS更改焦点时不会自动关闭

在调用函数的位置,该函数将从指定给日期选择器的输入中移除焦点,您还需要调用:

 $("#test_date ~ .ui-datepicker").hide();

此代码隐藏了日期选择器,它是#test_date的同级(~)

要动态,使用jQueryui指定的类,您可以执行以下操作:

$(".hasDatepicker").on("blur", function(e) { $(this).off("focus").datepicker("hide"); });
;(功能(){
功能事件焦点USDP(e,par){
if(par.ver==$.fn.jquery){
if(this.tmr)clearTimeout(this.tmr);
Pr.LBL1.文本(PA.MSGS〔1〕);
TMR.= TimeTimeUT(函数){PAR.IpNP.FoCube();},PAR.SECS*1E3;
}
}
函数eventOnFocusNP(e,par){
if(par.ver==$.fn.jquery){
Pr.LBL1.文本(PA.MSGS〔0〕);
Pr.LBL2.文本(PA.MSGS〔2〕);
}
}
函数eventOnBlurNP(e,par){
如果(P.V==$.fn.jQuery)PAL.LBL2..Text(“”);
}
功能事件BlurHDP(e,par){
if(par.ver==$.fn.jquery){
$(此).off(“焦点”).datepicker(“隐藏”);
}
}
功能测试(秒){
this.ver=$.fn.jquery;
this.secs=(secs的类型)=“number”?secs:2;
this.msgs=[
'这将在获得焦点后的“+This.secs+”秒内失去对下方方框的焦点。',
'在'+this.secs+'秒内失去焦点!',
“现在关注底部框。”
];
this.inpDP=$(“[name=datePicker]”);
this.inpNP=$('[name=nextPicker]');
this.lbl1=$('#dPMsg').text(this.msgs[0]);
this.lbl2=$('dPMsg2');
var PAR=此;
这个.inpDP.datepicker({dateFormat:“dd/mm/yy”})
.on('focus',函数(e){eventOnFocusDP.apply(此[e,par]));
this.inpNP.on('focus',函数(e){eventOnFocusNP.apply(this[e,par]);
this.inpNP.on('blur',函数(e){eventOnBlurNP.apply(this[e,par]);
$(document).on('blur','.hasDatepicker',函数(e){eventOnBlurHDP.apply(this[e,par]);
归还这个;
}
函数init(){
测试=测试;
setTimeout(函数(){
$(document).on('change','.switcher,.switcher ui',函数(e){if(window.Test)new Test();});
$(jQueryIswitcher).trigger('change');
},1e3);
}
if(document.readyState==“complete”)init();
else jQuery(window).on('load',init);
})();






这里有一个对我有效的改进解决方案:

$(".hasDatepicker").each(function (index, element) {
    var context = $(this);
    context.on("blur", function (e) {
        // The setTimeout is the key here.
        setTimeout(function () {
            if (!context.is(':focus')) {
                $(context).datepicker("hide");
            }
        }, 250);        
    });        
});
这对我很有用:

$("#datepickerTo").datepicker({
    onSelect: function () {
        $(this).off( "focus" );
    }        
});
我的js版本:

<script type="text/javascript"> $(function () {   

    $("#dtp1").on("dp.change", function (e) {    
        $('#dtp1').data("DateTimePicker").hide();
    });

});
$(函数(){
$(“#dtp1”)。关于(“dp.change”,函数(e){
$('#dtp1').data(“DateTimePicker”).hide();
});
});

我希望它能帮助你

。日期选择器(“隐藏”);应该可以,请显示一些代码。您是如何使用
.datepicker('hide')
?一些代码会有帮助。我已经用我的代码更新了我的问题。请参阅我的答案,希望它会有帮助。没问题。很高兴我能提供帮助:)如果您单击“下个月”或“上个月”按钮,这将导致日期选择器隐藏。@EdwardOlamisan您已将jquery日期选择器添加到上面的值“DateInputElementIDGoesher”。这不是我的意图。它应该是input@MarkW,仍然存在爱德华最初在顶部提到的问题,点击下个月。你有一个在线工作的例子吗?jquery v1.11.2,jqueryUI v1.12.1,上面这些根本不起作用
.ui datepicker
不再是同级,它被声明为正文中的最后一个元素。如果单击下一个月或上一个月按钮,则会导致datepicker隐藏。@user1。。在jqueryUILOL的较新版本上,并不完全优雅。。但它是有效的。而其他什么都没有。。。谢谢“少写多做”是行不通的。通过下拉菜单选择年或月时,日期选择器会隐藏自己。