月选者不工作

时间:2013-10-16 07:25:32

标签: javascript jquery jquery-ui jquery-ui-datepicker

您好无法在表格中显示月份选择器。

<!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函数的预加载函数

1 个答案:

答案 0 :(得分: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/