我必须单击两次才能让日期选择器显示

Posted

技术标签:

【中文标题】我必须单击两次才能让日期选择器显示【英文标题】:i have to click twice to let the datepicker show 【发布时间】:2016-11-17 04:00:48 【问题描述】:

我创建了一个显示 datepicker 的 jquery 代码,它运行良好,但我需要单击文本框两次才能让 datepicker 退出。我尝试使用$(document).ready(function (),但我不工作。所以我做了这个代码

$("[id*=txtDatePO]").live("click",function () 
        $(this).datepicker(
            //buttonImage: '../Images/Icons/calendar_1_icon&16.png',
            //buttonImageOnly: true,
            //showOn: 'both',
            dateFormat: 'yy-mm-dd',
            inline: true,
            firstDay: 1,
            showOtherMonths: true,
            dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

        );
    );

    $("[id*=txtDelDate]").live("click", function () 
        $(this).datepicker(
            dateFormat: 'yy-mm-dd',
            inline: true,
            firstDay: 1,
            showOtherMonths: true,
            dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']
        );
    );

如何将其更改为当用户单击文本框一次时,日历将一键显示。谢谢!

【问题讨论】:

好吧,你把它移到document.ready。究竟是什么不适合这种方法? jQuery live 已弃用,请改用:api.jquery.com/on 日期选择器元素是动态添加的吗? @Esko 'on' 不起作用。 @AdamAzad 动态是什么意思? 【参考方案1】:

虽然我从未使用过日期选择器,但如果我理解正确,点击事件似乎是内置的:

这是一个我分叉和修改的示例,用于测试现有和动态(创建)元素: http://jsfiddle.net/julienetienne/shzwaL7v/1/

var dynamicElement = document.createElement('input');
var body = document.getElementsByTagName('result')[0];

dynamicElement.id = 'input3';
dynamicElement.type ='text';
document.body.insertBefore(dynamicElement,$('#input2').get(0));

$('#input1').datepicker(
   dateFormat: 'dd-mm-yy'
);

$('#input2').datepicker(
   dateFormat: 'dd-mm-yy'
);

$(dynamicElement).datepicker(
   dateFormat: 'dd-mm-yy'
);



<input id="input1" type="text" />
<input id="input2" type="text" />

没有理由使用 document.ready() 或 .live()。只要代码在页面加载后执行,它就应该可以工作。

【讨论】:

【参考方案2】:

应该在document ready

$(document).ready(function () 
     $('#txtDatePO').datepicker(
            todayHighlight: true,
            orientation: "bottom left",
            autoclose: true
     );
);

顺便说一句,这个示例引导日期选择器

【讨论】:

【参考方案3】:

您需要将 datepicker("show") 与您的点击事件绑定,这对我有用

$("[id*=txtDatePO]").live("click",function () 
    $(this).datepicker(
        //buttonImage: '../Images/Icons/calendar_1_icon&16.png',
        //buttonImageOnly: true,
        //showOn: 'both',
        dateFormat: 'yy-mm-dd',
        inline: true,
        firstDay: 1,
        showOtherMonths: true,
        dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']

    ).datepicker("show");
);

【讨论】:

以上是关于我必须单击两次才能让日期选择器显示的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 多日期选择器问题

引导日期选择器插件问题

jquery 日历/日期选择器

Bootstrap 日期选择器显示月份和年份菜单

日期选择器之外的键盘

更改时引导日期选择器