一个表单中的两个jQuery UI日期选择器,"缺少实例数据"

ped*_*ete 6 jquery-ui-datepicker

我有一个形式的两个日期选择器.它们有不同的id,所以这不应该与类似的错误相关. jQuery的.将选择器应用于动态表单中的每个字段

我在firebug中遇到的错误是'未捕获的异常:缺少此datepicker的实例数据'

当我从'#copyTo'datepicker中选择一天时触发了这一点,该日期选择器是表单上的第二个日期选择器.第一个datepicker工作得很好.

我的形式是

<form name="copy" action="copyEvents.php" method="post">
<input type="hidden" id="copyFromHid" name="copyFromHid"/>
<input type="hidden" id="copyToHid" name="copyToHid"/>
Copy From <input id="copyFrom" name="copyFrom"/>
Copy To <input type="text" id="copyTo" name="copyTo"/>
<input type="hidden" name="gid" id="gid"/>
<input type="submit" value="copy"/>
</form>

jquery是

jQuery('input#copyFrom','div#copyFromHistory form')
    .datepicker({ 
        altField: 'input#copyFromHid',
        altFormat: 'yy-mm-d',
        dateFormat: 'd MM yy', 
        firstDay: 1,
        beforeShowDay: function(date) { 
            return (date.getDay() == 1) ? [true, ""] : [false, ""]; }
    });
jQuery('input#copyTo','div#copyFromHistory form')
    .datepicker({ 
        altField: 'input#copyToHid',
        altFormat: 'yy-mm-d',
        dateFormat: 'd MM yy', 
        firstDay: 1,
        beforeShowDay: function(date) { 
            return (date.getDay() == 1) ? [true, ""] : [false, ""]; }
    });
Run Code Online (Sandbox Code Playgroud)

有关为什么第一个字段可以工作的建议,而不是第二个字段的建议?

med*_*ina 6

易于解决,将代码更改为以下内容:

$('.date').live('focus', function(){
    $(this).datepicker({
        changeMonth: true,
        changeYear: true,
        yearRange: '1930:'+(new Date).getFullYear()
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 这个答案可能只包含一些提示,说明为了"修复"它所做的工作 (10认同)

Jon*_*and 2

我想到两件事:

其中之一位于 jQuery 选择器中:

jQuery('input#copyFrom','div#copyFromHistory form')
jQuery('input#copyTo','div#copyFromHistory form')
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,您都会传递 context/ownerDocument 参数jQuery(),但它正在寻找 DOM 元素或文档...而不是字符串。

第二件事是:

Copy From <input id="copyFrom" name="copyFrom"/>
Copy To <input type="text" id="copyTo" name="copyTo"/>
Run Code Online (Sandbox Code Playgroud)

复制到有type="test"而复制自没有(虽然默认输入类型是文本......所以可能不是这样)

我怀疑你真的想要:

jQuery('input#copyFrom').datepicker(....)
jQuery('input#copyTo').datepicker(....)
Run Code Online (Sandbox Code Playgroud)