使用my97 日历控件时报 WdatePicker is not defined错误该怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用my97 日历控件时报 WdatePicker is not defined错误该怎么办?相关的知识,希望对你有一定的参考价值。
1.firefox 32.demo 页没有错误.
问题补充:
我调用日历的页面是一个 iframe 页面,在Firefox 下会提示 $dp is not defined , 但直接访问这个 iframe 页面,则不会出错.
-------------------------------------------------------
问题我已经解决:
修改 WdatePicker.js 文件
$crossFrame:false, 值设成 false,原来的值是 true , 因为我没有用 frameset 框架,我都是用iframe
问题应该出现在这个地方:
while(T.parent[N]!=T[N]&&T.parent[N][A]("frameset").length==0)T=T.parent
我js 不是很熟,不能深入去研究了. 参考技术A 参考技术B 路径错误,或者就是没引入插件
造轮子:My97日历控件常用功能记录
http://www.cnblogs.com/oec2003/archive/2009/12/05/1617697.html
1 可以选择任何日期 <input id="txtDate" class="Wdate" type="text" onfocus="WdatePicker()" /> 2 今天以前的日期 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘})" /> 3 今天以后的日期 <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d}‘})" /> 上面设置今天以前和今天以后的日期用到的是maxDate和minDate,%y-%M-#{%d} 表示的是当天的日期,如果想今天以前或是今天以后的日期不包括今天,设置表达式中的d减去1或是加上1即可,如下: <!--今天以前的日期不包括今天--> <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d-1}‘})" /> <!--今天以后的日期不包括今天--> <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d+1}‘})" /> 4 同样如果只能选择今天设置maxDate和minDate都为今天就行,不过这个不常用到 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘,minDate:‘%y-%M-#{%d}‘})" /> 5 两个日期框,结束日期大于开始日期 <input id="txtStartDate" type="text" class="Wdate" onclick="WdatePicker({maxDate:‘#F{$dp.$D(\\‘txtEndDate\\‘,{d:-1})}‘})" /> <input id="txtEndDate" type="text" class="Wdate" onclick="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtStartDate\\‘,{d:1})}‘})" /> 如果将结束日期框的onclick里的{d:1} 改成{d:0},就表示结束日期可以选择和开始日期同一天 6 今天以前或以后N天的日期 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘, minDate:‘%y-%M-#{%d-7}‘})" /> <!--选择今天以后7天的日期--> <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d}‘, maxDate:‘%y-%M-#{%d+7}‘})" /> 7 两个日期框,结束日期大于开始日期,并且都是今天以后的日期 <input id="txtB" type="text" class="Wdate" onclick="WdatePicker({minDate:‘%y-%M-#{%d}‘, maxDate:‘#F{$dp.$D(\\‘txtE\\‘,{d:-1})}‘})"/> <input id="txtE" type="text" class="Wdate" onFocus="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtB\\‘,{d:1})|| \\‘%y-%M-#{%d+2}\\‘}‘})"/> 8 两个日期框,第一个选择后触发第二个弹出 <input id="txtBegin" class="Wdate" type="text" onfocus="var d5222=$dp.$(‘txtEnd‘); WdatePicker({onpicked:function(){txtEnd.focus();}, maxDate:‘#F{$dp.$D(\\‘txtEnd\\‘)}‘})" /> <input id="txtEnd" class="Wdate" type="text" onfocus="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtBegin\\‘)}‘})" /> 常用的日期范围选择先就总结这么多,还有些的功能比如给文本框加个日历小图标、禁止文本框输入、禁止日历控件清空等也是很常用的,代码如下: <!--给文本加上class=Wdate 文本框的右边就有日历小图标--> <input class="Wdate" type="text" onfocus="WdatePicker()" /> <!--禁止文本框输入--> <input class="Wdate" type="text" onfocus="WdatePicker({readOnly:true})" /> <!--禁止文本框输入--> <input class="Wdate" type="text" onfocus="WdatePicker({isShowClear:false})" /> <!--当然几种功能也能放到一起--> <input class="Wdate" type="text" onfocus="WdatePicker({readOnly:true,isShowClear:false})" /> 这里只是列出了些常用的功能,要想了解更多还是去看官方文档吧。至于日期范围的选择,看懂了那些代码就可以很容易地根据需求进行更改了。 注:上面又涉及到开始日期和结束日期两个日期框的,文本框控件必须要有id,这个id函数里面会用到,如果您的开发中使用了Aspnet中的MasterPage,那么文本框的id在生成页面后会改变,类似于:ctl00_ContentPlaceHolder1_txtEndDate,如果还是用文本框本身的id是不会起作用的,我的做法是查看源文件将生成的id复制到函数里。1 可以选择任何日期 <input id="txtDate" class="Wdate" type="text" onfocus="WdatePicker()" /> 2 今天以前的日期 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘})" /> 3 今天以后的日期 <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d}‘})" /> 上面设置今天以前和今天以后的日期用到的是maxDate和minDate,%y-%M-#{%d} 表示的是当天的日期,如果想今天以前或是今天以后的日期不包括今天,设置表达式中的d减去1或是加上1即可,如下: <!--今天以前的日期不包括今天--> <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d-1}‘})" /> <!--今天以后的日期不包括今天--> <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d+1}‘})" /> 4 同样如果只能选择今天设置maxDate和minDate都为今天就行,不过这个不常用到 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘,minDate:‘%y-%M-#{%d}‘})" /> 5 两个日期框,结束日期大于开始日期 <input id="txtStartDate" type="text" class="Wdate" onclick="WdatePicker({maxDate:‘#F{$dp.$D(\\‘txtEndDate\\‘,{d:-1})}‘})" /> <input id="txtEndDate" type="text" class="Wdate" onclick="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtStartDate\\‘,{d:1})}‘})" /> 如果将结束日期框的onclick里的{d:1} 改成{d:0},就表示结束日期可以选择和开始日期同一天 6 今天以前或以后N天的日期 <input type="text" class="Wdate" onfocus="WdatePicker({maxDate:‘%y-%M-#{%d}‘, minDate:‘%y-%M-#{%d-7}‘})" /> <!--选择今天以后7天的日期--> <input type="text" class="Wdate" onfocus="WdatePicker({minDate:‘%y-%M-#{%d}‘, maxDate:‘%y-%M-#{%d+7}‘})" /> 7 两个日期框,结束日期大于开始日期,并且都是今天以后的日期 <input id="txtB" type="text" class="Wdate" onclick="WdatePicker({minDate:‘%y-%M-#{%d}‘, maxDate:‘#F{$dp.$D(\\‘txtE\\‘,{d:-1})}‘})"/> <input id="txtE" type="text" class="Wdate" onFocus="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtB\\‘,{d:1})|| \\‘%y-%M-#{%d+2}\\‘}‘})"/> 8 两个日期框,第一个选择后触发第二个弹出 <input id="txtBegin" class="Wdate" type="text" onfocus="var d5222=$dp.$(‘txtEnd‘); WdatePicker({onpicked:function(){txtEnd.focus();}, maxDate:‘#F{$dp.$D(\\‘txtEnd\\‘)}‘})" /> <input id="txtEnd" class="Wdate" type="text" onfocus="WdatePicker({minDate:‘#F{$dp.$D(\\‘txtBegin\\‘)}‘})" /> 常用的日期范围选择先就总结这么多,还有些的功能比如给文本框加个日历小图标、禁止文本框输入、禁止日历控件清空等也是很常用的,代码如下: <!--给文本加上class=Wdate 文本框的右边就有日历小图标--> <input class="Wdate" type="text" onfocus="WdatePicker()" /> <!--禁止文本框输入--> <input class="Wdate" type="text" onfocus="WdatePicker({readOnly:true})" /> <!--禁止文本框输入--> <input class="Wdate" type="text" onfocus="WdatePicker({isShowClear:false})" /> <!--当然几种功能也能放到一起--> <input class="Wdate" type="text" onfocus="WdatePicker({readOnly:true,isShowClear:false})" /> 这里只是列出了些常用的功能,要想了解更多还是去看官方文档吧。至于日期范围的选择,看懂了那些代码就可以很容易地根据需求进行更改了。 注:上面又涉及到开始日期和结束日期两个日期框的,文本框控件必须要有id,这个id函数里面会用到,如果您的开发中使用了Aspnet中的MasterPage,那么文本框的id在生成页面后会改变,类似于:ctl00_ContentPlaceHolder1_txtEndDate,如果还是用文本框本身的id是不会起作用的,我的做法是查看源文件将生成的id复制到函数里。
以上是关于使用my97 日历控件时报 WdatePicker is not defined错误该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章