下拉選單的選項(或選項數)會因其它值而變動的做法??

edited 十月 2013 in Javascript
如題,
假設我要輸入出生日期,
這是由三個下拉選單所做,
前兩個是年,月,
日就有點麻煩,
會因為前兩項而改變選項'數目',
例如說,
二月就是28天或29天
有誰能指點一下嗎??



原始討論: http://twpug.net/x/modules/newbb/viewtopic.php?topic_id=4391

評論

  • edited 八月 2009
    一樣是ajax,不然就隱藏iframe,不然你就整頁刷掉吧..(笑
  • edited 八月 2009
    口訣:四年一潤,百年不潤,四百年潤。
    下面 code 應該很白話了吧..
    <form name=frm>
    年:<select name=a1 onChange='changeDay()'></select>
    月:<select name=a2 onChange='changeDay()'></select>
    日:<select name=a3></select>
    </form>
    
    <script>
    var ys = 1900
    var ye = 2100
    var mm = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    function init ()
    {
            o = document.frm
            // 建立年 options
            o.a1.options.length = ye - ys + 1
            for (var i = ys, j = 0; i <= ye; i++, j++) {
                    o.a1.options[j].value = i
                    o.a1.options[j].text  = i
            }
            // 建立月 options
            o.a2.options.length = 12
            for (var i = 1, j = 0; i <=12; i++, j++) {
                    o.a2.options[j].value = i
                    o.a2.options[j].text  = i
            }
    
            // 建立日 預設一月
            o.a3.options.length = 31
            for (var i = 1, j = 0; i <= mm[0]; i++, j++) {
                    o.a3.options[j].value = i
                    o.a3.options[j].text  = i
            }
    }
    
    function changeDay ()
    {
            year  = document.frm.a1.options[document.frm.a1.selectedIndex].value
            month = document.frm.a2.options[document.frm.a2.selectedIndex].value
            // 處理二月份
            if (month == 2) { // 口訣:四年一潤,百年不潤,四百年潤。
                    day = ((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))) ? 29 : mm[1]
            } else {
                    day = mm[month-1]
            }
    
            // 建立日
            o.a3.options.length = day
            for (var i = 1, j = 0; i <= day; i++, j++) {
                    o.a3.options[j].value = i
                    o.a3.options[j].text  = i
            }
    }
    
    init ()
    </script>
    
    
  • edited 十月 2009
    nice~
    好長一段阿
    寫得不錯
    不過如果是PHP要即時抓到系統時間
    然後讓使用者選擇送出不知道要怎麼寫才好
Sign In or Register to comment.