简体   繁体   English

.datepicker()函数可单击第二下

[英].datepicker() function works on second click

I have a list of datepickers generated on runtime, each with an id, but all under the same class "datepicker" 我有一个在运行时生成的datepicker列表,每个都有一个id,但都在同一类“ datepicker”下

<input class="datepicker" data-id="Adult" id="datepicker-0" Name="DateOfBirth0">
<input class="datepicker" data-id="Child" id="datepicker-1" Name="DateOfBirth1">
<input class="datepicker" data-id="Child" id="datepicker-2" Name="DateOfBirth2">

In javascript, I want to make adult's age between 13 and 90, and children's age between 2 and 12. So I am doing this: 在javascript中,我要使成年人的年龄在13到90之间,孩子的年龄在2到12之间。因此,我要这样做:

 $(function () {
        $(".datepicker").click(function () {
            var aId = this.id.split('-');
            var refNum = aId[1];
            var dataId = $("#datepicker-" + refNum).attr('data-id');

            var minDate = "";
            var maxDate = "";
            if (dataId == 'Adult') {
                minDate = "-90Y";
                maxDate = "-13Y";
            }
            else if (dataId == 'Child') {
                minDate = "-12Y";
                maxDate = "-2Y";
            }

            $("#datepicker-" + refNum).datepicker({
                changeMonth: true,
                changeYear: true,
                maxDate: maxDate,
                minDate: minDate
            });
        });
    });

So the weird thing that is happening, is that when the page loads, first time I click on the ".datepicker" input, nothing happens. 所以发生的事情很奇怪,就是当页面加载时,我第一次单击“ .datepicker”输入时,什么都没有发生。 Second time I click on the input, the datepicker calendar appears. 第二次单击输入时,将显示日期选择器日历。

Any idea why? 知道为什么吗?

It is working on second click because it is not taking the focus. 由于无法获得焦点,因此正在第二次点击。 Check following fiddler created. 检查以下创建的提琴手。

https://jsfiddle.net/0xr4jeba/

Hope this will help!!! 希望这会有所帮助!!!

$("#datepicker-" + refNum).datepicker({
                              changeMonth: true,
                              changeYear: true,
                              maxDate: maxDate,
                              minDate: minDate
                          }).focus();   

Try adding the 尝试添加

$(document).ready(function() {

    $(".datepicker").click(function () {
                var aId = this.id.split('-');
                var refNum = aId[1];
                var dataId = $("#datepicker-" + refNum).attr('data-id');

                var minDate = "";
                var maxDate = "";
                if (dataId == 'Adult') {
                    minDate = "-90Y";
                    maxDate = "-13Y";
                }
                else if (dataId == 'Child') {
                    minDate = "-12Y";
                    maxDate = "-2Y";
                }

                $("#datepicker-" + refNum).datepicker({
                    changeMonth: true,
                    changeYear: true,
                    maxDate: maxDate,
                    minDate: minDate
                });
            });

    });

This ensures that the document is loaded and event listners wire up before clicking 这可以确保在单击之前加载文档并连接事件列表器

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM