項目中用到一個級聯、動態下拉選擇日期框。我以前也收集過關于地區級聯的,那時候是用別人代碼。今天這個雖然簡單但感覺自己還是進步滿大,最起碼是自己親手寫出來的。o(∩_∩)o...哈哈
          ???首先是php代碼生成一個年月日的下拉組件。

          ?1 <? php
          ?2 ???? echo ? " <select?id=\ "" .$statement. " _year\ " ?onchange=\ " resetDate( ' ".$statement." ' )\ " ?disabled> " ;
          ?3 ???? for ( $i = 2003 ; $i <= 2015 ; $i ++ )
          ?4 ????{
          ?5 ???????? if ( $i == 2003 )
          ?6 ????????{
          ?7 ???????????? echo ? " <option?value=\ "" .$i. " \ "" . " ?selected> " . $i . " </option> " ;
          ?8 ????????}
          ?9 ???????? else
          10 ????????{
          11 ???????????? echo ? " <option?value=\ "" .$i. " \ " > " . $i . " </option> " ;????
          12 ????????}
          13 ????}
          14 ???? echo ? " </select>年 " ;
          15 ???? echo ? " <select?id=\ "" .$statement. " _month\ " ?onchange=\ " resetDate( ' ".$statement." ' )\ " ?disabled> " ;
          16 ???? for ( $i = 1 ; $i <= 12 ; $i ++ )
          17 ????{
          18 ???????? if ( $i == 1 )
          19 ????????{
          20 ???????????? echo ? " <option?value=\ "" .$i. " \ "" . " ?selected> " . $i . " </option> " ;
          21 ????????}
          22 ???????? else
          23 ????????{
          24 ???????????? echo ? " <option?value=\ "" .$i. " \ " > " . $i . " </option> " ;????
          25 ????????}
          26 ????}
          27 ???? echo ? " </select>月 " ;
          28 ???? echo ? " <select?id=\ "" .$statement. " _day\ " ?disabled> " ;
          29 ???? for ( $i = 1 ; $i <= 28 ; $i ++ )
          30 ????{
          31 ???????? if ( $i == 1 )
          32 ????????{
          33 ???????????? echo ? " <option?value=\ "" .$i. " \ "" . " ?selected> " . $i . " </option> " ;
          34 ????????}
          35 ???????? else
          36 ????????{
          37 ???????????? echo ? " <option?value=\ "" .$i. " \ " > " . $i . " </option> " ;????
          38 ????????}
          39 ????}
          40 ???? echo ? " </select>日 " ;
          41 ?>
          42

          也許你已經發現了,組件的ID我用了一個動態的。但是更讓你氣氛的是我居然把2月的日期都只寫了28天。(其實應該寫31天,必定默認選擇的是1月吧)(難道是防止閏年2月用戶卻選擇29,甚至選擇30、31?)哈哈,你誤會了。請看下面的javascript代碼。
          ?1/*
          ?2?*?@breif:?根據月份?以及年份調整日期的下拉選擇天數
          ?3?*?
          ?4?*/

          ?5function?changDay(obj)
          ?6{
          ?7????var?year_id?=?obj+"_year";
          ?8????var?month_id?=?obj+"_month";
          ?9????var?day_id?=?obj+"_day";
          10????var?year?=?Arr_year[parseInt(document.getElementById(year_id).selectedIndex)];
          11????var?month?=?Arr_month[parseInt(document.getElementById(month_id).selectedIndex)];
          12????//獲取下拉框
          13????var?select?=?document.getElementById(day_id);
          14????//獲取下拉框列表
          15????var?options??=?document.getElementById(day_id).options;
          16????var?len?=?options.length;
          17????//大月情況,即有31號
          18????if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
          19????{
          20????????while(len<31)
          21????????{
          22????????????//增加一個元素
          23????????????options[len]=new?Option(len+1,len+1);
          24????????????len++;
          25????????}

          26????}

          27????else?if(month==4||month==6||month==9||month==11)//小月,但不為2月
          28????{
          29????????while(len<30)
          30????????{
          31????????????//增加一個元素
          32????????????options[len]=new?Option(len+1,len+1);????????????
          33????????????len++;
          34????????}

          35????????while(len>30)
          36????????{
          37????????????//刪除一個元素
          38????????????select.remove(len-1);
          39????????????len--;
          40????????}

          41????}

          42????else?if(month==2&&(year%4==0&&year%100!=0||year%400==0))
          43????{
          44????????while(len>28)
          45????????{
          46????????????//刪除一個元素
          47????????????select.remove(len-1);
          48????????????len--;
          49????????}

          50????}
          else
          51????{
          52????????while(len<29)
          53????????{
          54????????????//增加一個元素
          55????????????options[len]=new?Option(len+1,len+1);????????????
          56????????????len++;
          57????????}

          58????????while(len>29)
          59????????{
          60????????????//刪除一個元素
          61????????????select.remove(len-1);
          62????????????len--;
          63????????}

          64????}

          65}

          66/*
          67?*?@breif:?選擇年份?或者月份后?重置日期為1
          68?*/

          69function?resetDate(obj)
          70{
          71????var?state_Flag?=?obj+"_day";
          72????document.getElementById(state_Flag).selectedIndex=0;
          73????changDay(obj);
          74}

          這里利用了簡單的dom編程,根據年月來通過事件動態增刪下拉列表選擇組件。

          最近到處問級聯怎么寫的人不少。實際上我這里只是我寫的一個簡單的算法,你大可不必想這么細,想想方法,知道怎么來著就ok了。

          比如我就在寫這篇博客的時候想到用ajax,動態取數據,那時候用ajax不是試過動態替換div嘛,當然也可以替換option原色的。但是總不適合刷新頁面的,所以用腳本或者ajax比較正常。

          當然我們下拉框也許不多。比我的這種。那么我們還可以同時放幾個select組件在那里,然后根據事件(即用戶對其他選項的操作)控制其是否顯示或者不顯示哪個select。

          大家可以談論啊。不一定要什么太專業,我們可以有很多想法,有不同的想法,也希望大家分享,賜教。

          ps:記得從前有人參加計算機考試,題目是讓寫程輸出:(大概意思了吧)

          *
          **
          ***
          ****
          *****
          (也許沒有這么規則,大概是要求用某種算法的形式。)
          1. 有人用了比較傳統的書上方法

          2. 我當時用了一個字符串“*****”循環打印其子串;

          3. 不過有一哥們,直接就是:
          system.out.println("*");
          system.out.println("*"*);
          ……
          事后,誰能說他是錯的(相反我覺得那小子不錯!),老師一定滿無奈的(當時不是學了)。(o(∩_∩)o...哈哈)必定那不是他考題的目的吧。
          posted on 2007-08-09 22:13 -274°C 閱讀(3413) 評論(1)  編輯  收藏 所屬分類: PHP


          FeedBack:
          # re: 簡單日期下拉框

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914107
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 顺昌县| 青浦区| 仁怀市| 正镶白旗| 长岭县| 泽普县| 衡山县| 固镇县| 日喀则市| 苏尼特左旗| 永安市| 榆中县| 交城县| 株洲市| 罗城| 平顶山市| 拉萨市| 四子王旗| 德钦县| 贺州市| 常德市| 南丹县| 界首市| 滨海县| 乡宁县| 兴和县| 黔南| 永胜县| 墨玉县| 仁化县| 衡山县| 普洱| 德化县| 灯塔市| 遂宁市| 屏边| 吴江市| 城固县| 大连市| 兴山县| 墨竹工卡县|