我有两个日期选择器在一个表单中。它们有不同的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, ""]; }
});
有关为什么第一个字段可行,但不是第二个字段的任何建议?
答案 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(....)