【问题标题】:jQuery datepicker not opening up on focusjQuery datepicker 没有打开焦点
【发布时间】:2013-04-18 17:41:06
【问题描述】:

这是我的场景:我有一个索引页面,上面有 2 个单选按钮和一个用于结果的跨度区域。单击其中一个单选按钮时,span 会填充一个 ajax 生成的页面,该页面具有这样的输入框:

<input size='25' class='datepicker' value='Click to enter deposit date' READONLY type='text'    id='depositDate' name='depositDate'> 

在这个页面的底部有一个“添加记录”按钮,它会触发 javascript 验证。验证是这样的:

var inpDepDate  = $.trim($("#depositDate").val());
if(inpPayDate=='Click to enter pay date') // Validate pay date
{
    alert('Invalid pay date; re-enter');

    document.getElementById('payDate').focus();
    document.getElementById('payDate').select();

    return false;
}

在我的 javascript 文件中还有:

$(function(){
    $( "#depositDate" ).live('focus', function() {
        $(this).datepicker({
            changeMonth: true,
            changeYear: true,
            minDate: "+1D",
            showOtherMonths: true,
            selectOtherMonths: true}).focus();
    });
});

问题是当验证失败时,文本会突出显示并被选中,但不会自动打开。

我尝试了很多东西,实际上是这个网站上的很多东西,但没有运气。它似乎永远无法识别现场活动。但是,如果我在验证失败后单击文本框(并且文本被突出显示),日历打开就好了。我在 jQuery 和 ui 方面相当新。

【问题讨论】:

    标签: datepicker jquery-ui-datepicker uidatepicker


    【解决方案1】:

    如果您过去已经在 #depositDate 上调用过日期选择器,则无需重新实例化它。 (或在 payDate)

    试试这个:

    if(inpPayDate=='Click to enter pay date') // Validate pay date
    {
        alert('Invalid pay date; re-enter');
    
        $("#payDate").datepicker("show");
        return false;
    }
    

    【讨论】:

    • 我尝试添加“show”行,但现在 jquery 文件出现错误“settings”为空或不是对象。
    • 我认为问题在于它在 ajax 调用和尝试重新显示它时验证失败之间丢失它。
    • 您还没有在 payDate 上调用 .datepicker 吗?在验证之前,如果你点击它,你会得到一个日期选择器吗?
    • 是的,它们工作正常,直到验证失败,我尝试重新关注它并自动打开。此时文本突出显示,但日历未打开。如果我因为实时点击代码而点击它,它就会发生。
    • 我该死的......我所做的是,因为 live.click 功能正在工作,在我的验证中我输入了 $("#depositDate").click();它有效。我知道这只是一个创可贴,我当然想弄清楚这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多