0

我已经做了我看到的大多数解决方案,但它不适用于我的。

这是我的代码:

function regenerateDatePickers()
{
  var length = $( ".forduplication" ).length;
  alert( length );
  for ( var i = 1 ; i <= length ; i++ ) {
    $( "#endDate" + i ).removeClass( "hasDatepicker" );
    $( "#endDate" + i ).datepicker();
  }
}

只有原始日期选择器字段有效。克隆的不是。奇怪的是,我动态创建的“选择”* 字段正在工作。

*选择http://harvesthq.github.com/chosen/

编辑 - 添加 HTML 代码

<tr class="forduplication">
  <td>
    ...
    ...<!--lots of other HTML codes-->
    ...
  </td>
  <td><input id="endDate1" name="endDatefield1" size="10"></td>
  ...
</tr>
4

2 回答 2

4

2015 年 6 月 1 日更新

.live() 不再受支持。使用.on()可以解决这个问题。

$('body')
        .on('click', '.datePick', function() {
            $(this).datepicker();
        })
        .on('focus', '.datePick', function() {
            $(this).datepicker();
        });

你可以使用livefocusin

为所有输入字段设置一个类,在这种情况下我用作datePick

$('input.datePick').live('focusin', function() {
    $(this).datepicker();
});​

希望这可以帮助

于 2012-05-15T04:25:30.543 回答
0

一种方法是在每次点击时销毁并重新分配日期选择器,但它存在性能问题

$('input[id^="endDate"]').live('click', function() {
    $(this).datepicker('destroy').datepicker({showOn:'focus'}).focus();
});

it works but remove and add datepicker every time you click on a input. So it's bettter if you can do this just after cloning the input like

....clone().datepicker('destroy').datepicker({showOn:'focus'}); 

and then add that element to where you want it to be.

于 2012-05-15T04:37:19.087 回答