使用altFields动态生成jQuery Datepicker

3 jquery datepicker livequery

我只是通过将字段HTML附加到div来动态生成datepicker:

<input type="text" value="" readonly="readonly" name="tier[2][publication_date]" id="publication_date_2" size="10" maxlength="10" tabindex="6" class="publication_date hasDatepicker">
<input type="hidden" name="tier[2][publication_date_db]" id="publication_date_db_2" value="">
Run Code Online (Sandbox Code Playgroud)

由于我们存储日期的方式,我们为datepicker设置了一个单独的字段(altfield),用于存储用户选择的数据库格式化日期.

要处理多个日期选择器的选择,我分配一个类并使用livequery,以便在页面加载后检测onClicks:

$(".publication_date").livequery(function() {
                $(this).datepicker({
                    dateFormat: "dd M yy",
                    changeYear: true,
                    changeMonth: true,
                    onSelect: function(dateText, inst) {
                        console.log(inst);
                    }
                });
            });
Run Code Online (Sandbox Code Playgroud)

我有一个问题,datepicker如何知道填充哪个altfield?在单个日期选择器上,通常包括:

altField: '#start_date_datepicker_altfield', 
altFormat: 'yy-mm-dd',
Run Code Online (Sandbox Code Playgroud)

为了人口的发生.

Nic*_*ver 5

我知道文档说它需要一个选择器,但它也可以使用一个jQuery对象,所以只需$(this).next()用来获取隐藏字段,如下所示:

$(".publication_date").livequery(function() {
   $(this).datepicker({
      altField: $(this).next(), 
      altFormat: 'yy-mm-dd',
      dateFormat: "dd M yy",
      changeYear: true,
      changeMonth: true,
      onSelect: function(dateText, inst) {
        console.log(inst);
      }
   });
});
Run Code Online (Sandbox Code Playgroud)

由于大多数插件可归结$(input)为该输入可以是选择器 jQuery对象或DOM元素,它仍然可以正常工作:)