1

您好,我无法显示放置在表格内的月份选择器。

<!DOCTYPE html>
<head>
    <script src="js/libs/jquery-1.9.1.js"></script>
        <link rel="stylesheet" href="css/jquery-ui.css" />
<script src="js/libs/jquery-ui-1.10.3.custom.min.js"></script>  
$(function() {
    $('.date-picker').datepicker( {
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy',
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, month, 1));
        }
    });
});
</script>
<script>
        window.onload = function () {
  PreLoadSection();
</script>
<style>
.ui-datepicker-calendar {
    display: none;
    }
</style>


</head>
<body>
<div id="variables" name="variables" style="width:100%; overflow:auto; overflow: scroll;">          
    </div>  
</body>
</html>

上面是我的 htm 代码,下面是我的 .js 文件

function PreLoadSection()
{
 LoadSectionStratified();
}
function LoadSectionStratified() {
   $('#variables').append($('<table id="variables_table">'));
  $('#variables').append($('<tr>'));
  $('#variables').append('<th style="border: 10px">month picker</th>');
      $('#variables').append($('</tr>'));

   $('#variables').append($('<tr>'));
   AddDate_MonthYear_StratifiedSection();
 $('#variables').append($('</tr>'));
     $('#variables').append($('</table>'));
 $('#variables').trigger('create');
}

function AddDate_MonthYear_StratifiedSection() {
 table_html = '<td style="min-width: 200px;"><input name="name1" id="id1" value="" class="date-picker"></td>';
 $('#variables').append(table_html);
}

上面的代码是如何实现它,但它不起作用。我正在使用 Firefox 版本 24。在窗口加载时,我调用调用 LoadSectionStratified 函数的预加载函数

4

1 回答 1

1

我认为这可能是因为它是一个新添加的 DOM 元素,请将您的重写$('.date-picker')为:

$(document).on('focus', '.date-picker', function() {
    $(this).datepicker({
       //Options
    });
});

它将收听$('.date-picker')当前存在的任何文件的整个文档。我已经用你的代码添加了一个演示,例如:

小提琴:http: //jsfiddle.net/dHYfv/5/

正如Juhana所提到的,在将其附加到 DOM 时对其进行初始化会更干净,调整:

var opts = {
       changeMonth: true,
       changeYear: true,
       showButtonPanel: true,
       dateFormat: 'MM yy',
           onClose: function(dateText, inst) { 
              var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
              var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
              $(this).datepicker('setDate', new Date(year, month, 1));
           }
       };

function AddDate_MonthYear_StratifiedSection() {
    var table_html = '<td style="min-width: 200px;">'+ 
                     '<input name="name1" id="id1" '+ 
                            'value="" class="date-picker" />'+
                     '</td>';

    $('#variables').append(table_html)
                   .find('.date-picker')
                   .datepicker( opts );
}

小提琴:http: //jsfiddle.net/dHYfv/6/

于 2013-10-16T08:25:49.433 回答