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

时间:2010-01-22 03:45:40

标签: jquery-ui-datepicker

我有两个日期选择器在一个表单中。它们有不同的id,所以这不应该与类似的错误相关。 jQuery. Apply selector to every field in a dynamic form

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

当我从'#copyTo'statepicker中选择一天时触发了这一点,这是表单上的第二个日期选择器。第一个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, ""]; }
    });

有关为什么第一个字段可行,但不是第二个字段的任何建议?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

我想到了两件事:

一个是在你的jQuery选择器中:

jQuery('input#copyFrom','div#copyFromHistory form')
jQuery('input#copyTo','div#copyFromHistory form')

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

第二件事是:

Copy From <input id="copyFrom" name="copyFrom"/>
Copy To <input type="text" id="copyTo" name="copyTo"/>

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

我怀疑你真的想要:

jQuery('input#copyFrom').datepicker(....)
jQuery('input#copyTo').datepicker(....)