在动态创建的按钮上显示datepicker

时间:2013-04-02 14:00:56

标签: javascript jquery jquery-ui-datepicker

我试图在用户点击动态创建的按钮时显示datepicker。我不想在那里显示文本框,所以我使用隐藏输入。

使用Javascript:

        function showDate(){
        var dateDiv = $('#dateDiv');
        for(ind=0; ind<=5; ind++){
            var date = $('<img src="calendar.png" class="datepicker" id="'+ind+'-date" /><input type="hidden" id="'+ind+'-date-picker" /><br />');
            dateDiv.append(date);
        }
    }

    window.onload = function(){
        showDate();
        $('.datepicker').live('click', function(){
            var datepickerId =$(this).attr('id');
            datepickerId += '-picker';
            $('#'+datepickerId).datepicker();
        });
    }

但是当我点击日历图标时没有任何反应。

HTML:

<body>
   <div id="dateDiv"></div>
</body>

2 个答案:

答案 0 :(得分:1)

.datepicker()只需设置一个日期选择器。您可以在创建div时执行此操作,而不是每次单击它时都这样做。

要显示它,您可以拨打.datepicker('show');

答案 1 :(得分:0)

不确定您使用的是哪个版本的JQuery,但如果它是1.7+,则不推荐使用.live()',如果它是1.9+,则它已被删除。 Link

此外,我建议使用document.ready函数进行初始化。

function showDate(){
    var dateDiv = $('#dateDiv');
    for(ind=0; ind<=5; ind++){
         var date = $('<img src="calendar.png" class="datepicker" id="'+ind+'-date" /><input type="hidden" id="'+ind+'-date-picker" /><br />');
        dateDiv.append(date);
    }
}

$(document).ready( function(){
    showDate();

    $('.datepicker').on('click', function(){
        var $datepicker =$(this).attr('id');
        $datepicker += '-picker';
        $('#'+$datepicker).datepicker();
    });
});

Here is a fiddle of the above