2.5.asp-.htm 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <meta name="keywords" content="日期控件 datepicker calendar 日历控件 javascript js日历控件 带时间 自定义格式 月历控件 日期时间 日期选择" />
  6. <title>My97日期控件 功能演示 自定义事件 My97 Datepicker Demo</title>
  7. <link href="../../css/base.css" tppabs="http://www.my97.net/dp/css/base.css" rel="stylesheet" type="text/css" />
  8. <link href="demo.css" tppabs="http://www.my97.net/dp/demo/resource/demo.css" rel="stylesheet" type="text/css" />
  9. </head>
  10. <body>
  11. <iframe src="../../head.asp" tppabs="http://www.my97.net/dp/head.asp" scrolling="no" frameborder="0" height="100px" width="100%"></iframe>
  12. <script language="JavaScript" type="text/javascript" src="../../../WdatePicker.js" tppabs="http://www.my97.net/dp/My97DatePicker/WdatePicker.js"></script>
  13. <div class="dCenter dBody">
  14. <div id="content">
  15. <h2>二. 功能及示例<a name="m2" id="m2"></a></h2>
  16. <h3>5. 自定义事件<a name="m25" id="m25"></a></h3>
  17. <ol>
  18. <li>自定义事件
  19. <a name="m251" id="m251"></a>
  20. <p>如果你需要做一些附加的操作,你也不必担心,日期控件自带的自定义事件可以满足你的需求.此外,你还可以在自定义事件中调用提供的API库来做更多的运算和扩展,绝对可以通过很少的代码满足你及其个性化的需求.<br />
  21. <br />
  22. 注意下面几个重要的指针,将对你的编程带来很多便利<br />
  23. <span class="STYLE1">this: 指向文本框<br />
  24. dp: 指向$dp<br />
  25. dp.cal: 指向日期控件对象</span><br />
  26. 注意:函数原型必须使用类似 <span class="STYLE1">function(dp){} </span>的模式,这样子,在函数内部才可以使用dp</p>
  27. </li>
  28. <li>onpicking 和 onpicked 事件
  29. <a name="m252" id="m252"></a>
  30. <div>
  31. <h4>示例5-2-1 onpicking事件演示</h4>
  32. <p>
  33. <input type="text" id="5421" onFocus="WdatePicker({onpicking:function(dp){if(!confirm('日期框原来的值为: '+dp.cal.getDateStr()+', 要用新选择的值:' + dp.cal.getNewDateStr() + '覆盖吗?')) return true;}})" class="Wdate"/>
  34. <br />
  35. &lt;input type=&quot;text&quot; id=&quot;5421&quot; onFocus=&quot;WdatePicker({<span class="STYLE2">onpicking:</span><span class="STYLE1">function(dp){if(!confirm('日期框原来的值为: '+dp.cal.getDateStr()+', 要用新选择的值:' + dp.cal.getNewDateStr() + '覆盖吗?')) return true;}</span>})&quot; class=&quot;Wdate&quot;/&gt;<br />
  36. <br />
  37. <span class="STYLE1">注意:</span>你注意到dp.cal.getDateStr和dp.cal.getNewDateStr的用法了嘛? 详见<a href="999.asp-.htm#m5" tppabs="http://www.my97.net/dp/demo/resource/999.asp?#m5">内置函数和属性</a></p>
  38. </div>
  39. <div>
  40. <h4>示例5-2-2 使用onpicked实现日期选择联动</h4>
  41. <p>选择第一个日期的时候,第二个日期选择框自动弹出<br />
  42. 日期从:
  43. <input id="d5221" class="Wdate" type="text" onFocus="var d5222=$dp.$('d5222');WdatePicker({onpicked:function(){d5222.focus();},maxDate:'#F{$dp.$D(\'d5222\')}'})"/>
  44. <input id="d5222" class="Wdate" type="text" onFocus="WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})"/>
  45. <br />
  46. <span class="STYLE1">注意:</span>下面第一个控件代码的写法<br />
  47. &lt;input id=&quot;<span class="STYLE1">d5221</span>&quot; class=&quot;Wdate&quot; type=&quot;text&quot; onFocus=&quot;var d5222=$dp.$('d5222');WdatePicker({<span class="STYLE2">onpicked:</span><span class="STYLE1">function(){d5222.focus();}</span>,maxDate:'#F{$dp.$D(\'d5222\')}'})&quot;/&gt;<br />
  48. 至<br />
  49. &lt;input id=&quot;<span class="STYLE1">d5222</span>&quot; class=&quot;Wdate&quot; type=&quot;text&quot; onFocus=&quot;WdatePicker({minDate:'#F{$dp.$D(\'d5221\')}'})&quot;/&gt;<br />
  50. <br />
  51. <span class="STYLE1">注意:</span>$dp.$是一个<a href="999.asp-.htm#m5" tppabs="http://www.my97.net/dp/demo/resource/999.asp?#m5">内置函数</a>,相当于document.getElementById</p>
  52. </div>
  53. <div>
  54. <h4>示例5-2-3 将选择的值拆分到文本框 </h4>
  55. <p>
  56. <input type="text" id="d523_y" size="5"/>
  57. <input type="text" id="d523_M" size="3"/>
  58. <input type="text" id="d523_d" size="3"/>
  59. <input type="text" id="d523_HH" size="3"/>
  60. <input type="text" id="d523_mm" size="3"/>
  61. <input type="text" id="d523_ss" size="3"/>
  62. <input type="text" id="d523"/>
  63. <img onclick="WdatePicker({el:'d523',dateFmt:'yyyy-MM-dd HH:mm:ss',onpicked:pickedFunc})" src="../../../skin/datePicker.gif" tppabs="http://www.my97.net/dp/My97DatePicker/skin/datePicker.gif" width="16" height="22" align="absmiddle" style="cursor:pointer"/>
  64. <script>
  65. function pickedFunc(){
  66. $dp.$('d523_y').value=$dp.cal.getP('y');
  67. $dp.$('d523_M').value=$dp.cal.getP('M');
  68. $dp.$('d523_d').value=$dp.cal.getP('d');
  69. $dp.$('d523_HH').value=$dp.cal.getP('H');
  70. $dp.$('d523_mm').value=$dp.cal.getP('m');
  71. $dp.$('d523_ss').value=$dp.cal.getP('s');
  72. }
  73. </script>
  74. <br />
  75. &lt;input type=&quot;text&quot; id=&quot;d523_y&quot; size=&quot;5&quot;/&gt;
  76. 年<br />
  77. &lt;input type=&quot;text&quot; id=&quot;d523_M&quot; size=&quot;3&quot;/&gt;
  78. 月<br />
  79. &lt;input type=&quot;text&quot; id=&quot;d523_d&quot; size=&quot;3&quot;/&gt;
  80. 日<br />
  81. &lt;input type=&quot;text&quot; id=&quot;d523_HH&quot; size=&quot;3&quot;/&gt;
  82. 时<br />
  83. &lt;input type=&quot;text&quot; id=&quot;d523_mm&quot; size=&quot;3&quot;/&gt;
  84. 分<br />
  85. &lt;input type=&quot;text&quot; id=&quot;d523_ss&quot; size=&quot;3&quot;/&gt;
  86. 秒 <br />
  87. &lt;img onclick=&quot;WdatePicker({<span class="STYLE2">el:</span><span class="STYLE1">'d523'</span>,dateFmt:'yyyy-MM-dd HH:mm:ss',<span class="STYLE2">onpicked:</span><span class="STYLE1">pickedFunc</span>})&quot; src=&quot;../../../skin/datePicker.gif&quot; width=&quot;16&quot; height=&quot;22&quot; align=&quot;absmiddle&quot; style=&quot;cursor:pointer&quot;/&gt;<br />
  88. <span class="STYLE1">&lt;script&gt;</span><br />
  89. <span class="STYLE2">function</span> pickedFunc(){<br />
  90. $dp.$('d523_y').value=$dp.cal.getP('y');<br />
  91. $dp.$('d523_M').value=$dp.cal.getP('M');<br />
  92. $dp.$('d523_d').value=$dp.cal.getP('d');<br />
  93. $dp.$('d523_HH').value=$dp.cal.getP('H');<br />
  94. $dp.$('d523_mm').value=$dp.cal.getP('m');<br />
  95. $dp.$('d523_ss').value=$dp.cal.getP('s');<br />
  96. }<br />
  97. <span class="STYLE1">&lt;/script&gt;</span><br />
  98. <br />
  99. <span class="STYLE1">注意:</span>el:'d523'中,如果你不需要d523这个框,你可以把他改成hidden,但是el属性必须指定<br />
  100. $dp.$和$dp.cal.getP都是<a href="999.asp-.htm#m5" tppabs="http://www.my97.net/dp/demo/resource/999.asp?#m5">内置函数</a> </p>
  101. </div>
  102. </li>
  103. <li>onclearing 和 oncleared 事件
  104. <a name="m253" id="m253"></a>
  105. <div>
  106. <h4>示例5-3-1 使用onclearing事件取消清空操作</h4>
  107. <p>
  108. <input type="text" class="Wdate" id="d531" onFocus="WdatePicker({onclearing:function(){if(!confirm('日期框的值为:'+this.value+', 确实要清空吗?'))return true;}})"/>
  109. <br />
  110. &lt;input type=&quot;text&quot; class=&quot;Wdate&quot; id=&quot;d531&quot; onFocus=&quot;WdatePicker({<span class="STYLE2">onclearing:</span><span class="STYLE1">function(){if(!confirm('日期框的值为:'+this.value+', 确实要清空吗?'))return true;}</span>})&quot;/&gt;<br />
  111. <br />
  112. <span class="STYLE1">注意:</span>当onclearing函数返回true时,系统的清空事件将被取消,<br />
  113. 函数体里面没有引用$dp,所以函数原型里面可以省略参数dp </p>
  114. </div>
  115. <div>
  116. <h4>示例5-3-2 使用cal对象取得当前日期所选择的月份(使用了 dp.cal)</h4>
  117. <p>
  118. <input type="text" class="Wdate" id="d532" onFocus="WdatePicker({oncleared:function(dp){alert('当前日期所选择的月份为:'+dp.cal.date.M);}})"/>
  119. <br />
  120. &lt;input type=&quot;text&quot; class=&quot;Wdate&quot; id=&quot;d532&quot; onFocus=&quot;WdatePicker({<span class="STYLE2">oncleared:</span><span class="STYLE1">function(dp){alert('当前日期所选择的月份为:'+dp.cal.date.M);}</span>})&quot;/&gt;</p>
  121. </div>
  122. <div>
  123. <h4>示例5-3-3 综合使用两个事件</h4>
  124. <p>
  125. <input type="text" class="Wdate" id="d533" onFocus="d533_focus(this)" value="2000-04-09"/>
  126. <script>
  127. function d533_focus(element){
  128. var clearingFunc = function(){ if(!confirm('日期框的值为:'+this.value+', 确实要清空吗?')) return true; }
  129. var clearedFunc = function(){ alert('日期框已被清空'); }
  130. WdatePicker({el:element,onclearing:clearingFunc,oncleared:clearedFunc})
  131. }
  132. </script>
  133. <br />
  134. <span class="STYLE1">&lt;script&gt;</span><br />
  135. <span class="STYLE2">function</span> d533_focus(element){<br />
  136. var clearingFunc = function(){
  137. if(!confirm('日期框的值为:'+this.value+', 确实要清空吗?')) return true;
  138. }<br />
  139. var clearedFunc = function(){
  140. alert('日期框已被清空');
  141. }<br />
  142. WdatePicker({el:element,onclearing:clearingFunc,oncleared:clearedFunc})<br />
  143. }<br />
  144. <span class="STYLE1">&lt;/script&gt;</span><br />
  145. &lt;input type=&quot;text&quot; class=&quot;Wdate&quot; id=&quot;d533&quot; onFocus=&quot;<span class="STYLE1">d533_focus(this)</span>&quot;/&gt;</p>
  146. </div>
  147. </li>
  148. <li>年月日时分秒的 changing和changed <a name="m254" id="m254"></a> <p>年月日时分秒都有对应的changing和changed事件,分别是:<br />
  149. ychanging ychanged <br />
  150. Mchanging Mchanged<br />
  151. dchanging dchanged<br />
  152. Hchanging Hchanged<br />
  153. mchanging mchanged<br />
  154. schanging schanged <br />
  155. </p>
  156. <div>
  157. <h4>示例5-4-1 年月日改变时弹出信息</h4>
  158. <p>
  159. <input type="text" class="Wdate" id="d" onFocus="WdatePicker({dchanging:cDayFunc,Mchanging:cMonthFunc,ychanging:cYearFunc,dchanged:cDayFunc,Mchanged:cMonthFunc,ychanged:cYearFunc})"/>
  160. <script>
  161. function cDayFunc(){
  162. cFunc('d');
  163. }
  164. function cMonthFunc(){
  165. cFunc('M');
  166. }
  167. function cYearFunc(){
  168. cFunc('y');
  169. }
  170. function cFunc(who){
  171. var str,p,c = $dp.cal;
  172. if(who=='y'){
  173. str='年份';
  174. p='y';
  175. }
  176. else if(who=='M'){
  177. str='月份';
  178. p='M';
  179. }
  180. else if(who=='d'){
  181. str='日期';
  182. p='d';
  183. }
  184. alert(str+'发生改变了!\n$dp.cal.date.'+p+'='+c.date[p]+'\n$dp.cal.newdate.'+p+'='+c.newdate[p]);
  185. }
  186. </script>
  187. <br />
  188. &lt;input type=&quot;text&quot; class=&quot;Wdate&quot; onFocus=&quot;WdatePicker({<span class="STYLE2">dchanging:<span class="STYLE1">cDayFunc</span>, Mchanging:</span><span class="STYLE1">cMonthFunc</span>,<span class="STYLE2"> ychanging:</span><span class="STYLE1">cYearFunc</span>,<span class="STYLE2"> dchanged:<span class="STYLE1">cDayFunc</span>, Mchanged:</span><span class="STYLE1">cMonthFunc</span>, <span class="STYLE2">ychanged:</span><span class="STYLE1">cYearFunc</span>})&quot;/&gt;<br />
  189. <span class="STYLE1">&lt;script&gt;</span><br />
  190. <span class="STYLE2">function</span> cDayFunc(){<br />
  191. cFunc('d');<br />
  192. }<br />
  193. <span class="STYLE2">function</span> cMonthFunc(){<br />
  194. cFunc('M');<br />
  195. }<br />
  196. <span class="STYLE2">function</span> cYearFunc(){<br />
  197. cFunc('y');<br />
  198. }<br />
  199. <span class="STYLE2">function</span> cFunc(who){<br />
  200. var str,p,c = $dp.cal;<br />
  201. if(who=='y'){<br />
  202. str='年份';<br />
  203. p='y';<br />
  204. }<br />
  205. else if(who=='M'){<br />
  206. str='月份';<br />
  207. p='M';<br />
  208. }<br />
  209. else if(who=='d'){<br />
  210. str='日期';<br />
  211. p='d';<br />
  212. }<br />
  213. alert(str+'发生改变了!\n$dp.cal.date.'+p+'='+c.date[p]+'\n$dp.cal.newdate.'+p+'='+c.newdate[p]);<br />
  214. }<span class="STYLE1"><br />
  215. &lt;/script&gt;</span><br />
  216. <br />
  217. 这个例子用到了 $dp.cal.date 和 $dp.cal.newdate 属性,你能从这里发现他们的不同之处吗?<br />
  218. 下面是有关这两个属性的描述详见<a href="999.asp.htm#m5" tppabs="http://www.my97.net/dp/demo/resource/999.asp#m5">内置函数和属性</a>
  219. </p>
  220. </div>
  221. <p><br />
  222. </p>
  223. </li>
  224. </ol>
  225. <h3><a href="2.6.asp.htm" tppabs="http://www.my97.net/dp/demo/resource/2.6.asp">6. 快速选择功能</a> <a name="m26" id="m26"></a></h3>
  226. <h2><a href="3.asp.htm" tppabs="http://www.my97.net/dp/demo/resource/3.asp">三. 配置说明</a><a name="m3" id="m3"></a></h2>
  227. <h2><a href="999.asp.htm" tppabs="http://www.my97.net/dp/demo/resource/999.asp">四. 如何使用</a><a name="m4" id="m4"></a></h2>
  228. <br />
  229. <br />
  230. </div>
  231. <div style="clear:both"></div>
  232. </div>
  233. <div class="dCenter dBody" style="padding-left:72px">
  234. <script type="text/javascript"><!--
  235. google_ad_client = "ca-pub-6343250634002651";
  236. /* 底部 */
  237. google_ad_slot = "0599809152";
  238. google_ad_width = 728;
  239. google_ad_height = 90;
  240. //-->
  241. </script>
  242. <script type="text/javascript">
  243. </script>
  244. </div>
  245. <div id="footer" class="dCenter">&copy; 2010 <a href="mailto:smallcarrot@163.com">My97</a> All Rights Reserved.&nbsp;&nbsp;&nbsp;&nbsp;<script type="text/javascript">
  246. var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
  247. document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F489957c212e14340592fb2e4921b2f1d' type='text/javascript'%3E%3C/script%3E"));
  248. </script>&nbsp;&nbsp;&nbsp;&nbsp;浙ICP备11060275号
  249. </div>
  250. </body>
  251. </html>