0

在我的 html 中,我有两个不同的日期选择器,在两个不同的 div 中。从日期选择器中选择一天时,我想做一些事情,如下所示:

$('#details1 tr .ui-body-c').on('click', function(){
    $('#details1 .hasDatepicker').hide();
    if($('#date1').val()!="")
    {
        var day=new Date($('#date1').val());
        day.setHours(23);
        day.setMinutes(59);
        day.setSeconds(59);

        getDayData(day);
    }
});

但是点击当天不会触发点击事件。如果我从选择器中删除#details1,则事件会触发,但同时使用两个日期选择器。

这是 datepicker 插件的链接:http: //jquerymobile.com/demos/1.0a4.1/experiments/ui-datepicker/

编辑:似乎在页面内未检测到 jquery-mobile datepicker 创建的表。我什至试过这个:

$('html tr .ui-body-c').on('click', function(){
   $('#details1 .hasDatepicker').hide();
    if($('#date1').val()!="")
    {
        var day=new Date($('#date1').val());
        day.setHours(23);
        day.setMinutes(59);
        day.setSeconds(59);

        getDayData(day);
    }
});

并且不工作。结果也做var a = $('.datepicker-calendar').parent()了并得到了[]。

关于为什么会发生这种情况以及如何解决它的任何想法?

4

2 回答 2

1

编辑:我很抱歉,我应该仔细看看 datepicker 的移动版本是做什么的。您的问题很可能是由于稍后将表添加到 DOM,您将需要从静态事件委托事件,例如:

$('#details1').on('click', 'tr .ui-body-c', function(){

如果 datepicker 的移动版本与普通的 jQuery UI 相同,则最好在首次初始化时使用 onSelect 事件,例如:

$('#details1').datepicker({
    onSelect: function(dateText, inst) {
        inst.input.hide();
        var day=new Date(dateText);
        day.setHours(23);
        day.setMinutes(59);
        day.setSeconds(59);

        getDayData(day);
    }
});​

当您选择一天时会触发此事件,dateText 是它将放入输入中的值(无需自己获取),inst 是包含相关输入的 datepicker 实例(inst.input)。

于 2012-07-18T14:27:10.767 回答
0

我通过编辑jquery.ui.datepicker.mobile.js文件、向元素添加自定义类来解决这个问题。

if(options.altField!=undefined)
    $(dp).attr('id', options.altField.split('#')[1] + '1');

然后在function updateDatepicker(){

$( ".ui-datepicker-calendar td", dp ).addClass("ui-body-c "+$(dp).attr('id')+'2');

因此,如果我的日期输入的 id 是“myDatePicker”,日历上的每个 td 都会有“myDatePicker12”类,我可以这样做:

$('.myDatePicker12').on('click', function(){
   $('#details1 .hasDatepicker').hide();
    if($('#date1').val()!="")
    {
        var day=new Date($('#date1').val());
        day.setHours(23);
        day.setMinutes(59);
        day.setSeconds(59);

        getDayData(day);
    }
});
于 2012-07-19T08:51:53.200 回答