关于作者

菜鸟求助一个关于日期选择的问题!

上一篇 / 下一篇  2006-12-15 20:49:54 / 个人分类:天天向上

查看( 646 ) / 评论( 2 )
下面是一个日期选择的select,好象是自动 selected="selected" 在当前时间上。无忧脚本`8QgL8X+wo
我是从别人的页子里查看源码直接拷贝的,好象缺点什么,自己又搞不明白,所以不能用!
e9]6J^5@.T)x8i7J0 希望大大们能帮助一下,感谢!

CODE:

<script language="javascript" type="text/javascript">无忧脚本,f6I:jDE7` d"nb
<!--
2}1u ^'z:NV+n1Y(e0
/g AC)C*s$SCBw0 function check_date(day_dropdown_name, month_dropdown_name, year_dropdown_name) {无忧脚本 AlU_4V Mg
        var f              = document.forms[0];
/R't8c8] u0         var day_dropdown   = null;
Dceaxm0         var month_dropdown = null;无忧脚本:D8UJIE^[#tt
        var year_dropdown  = null;无忧脚本F;p1oSduE$iP D
       
u+h*z9xs;N0         for (var i = 0; i < f.length; i++) {
j\&C&lD"C)p:Bt0                 if (f[i].id.lastIndexOf("_" + day_dropdown_name) != -1) {无忧脚本5O9z1Of3@#Vf8{
                        day_dropdown   = f[i];无忧脚本 K%WPX;k]
                }
k Egl5e h0                 else if (f[i].id.lastIndexOf("_" + month_dropdown_name) != -1) {
iu)K4h/cL8m#P0                         month_dropdown = f[i];
$e%d,rH bYyO0                 }无忧脚本}&H ip!j(h:`
                else if (f[i].id.lastIndexOf("_" + year_dropdown_name) != -1) {无忧脚本5tt-YfA8m4a"{7{
                        year_dropdown  = f[i];无忧脚本n GZ z6aC u;i
                }
.R0V2XQ6A}3Y}5Vf0         }
YSn0yl mh0 无忧脚本M#@Iqjx4@W q
        var date = new Date(year_dropdown.value, month_dropdown.value - 1, day_dropdown.value);
J~U#s ^0 无忧脚本H P gj3T'U
        for (var i = 1; date.getMonth() != (month_dropdown.value - 1); i++) {
+M`'m Kd7r!ih0                 date = new Date(year_dropdown.value, month_dropdown.value - 1, day_dropdown.value - i);
9G~Y u)rh5s7~$ra/P%O0         }无忧脚本p+h*n6y{JU4e
无忧脚本!Gs%E y1G~ s w Jj
        day_dropdown.value = date.getDate();
{t d2['J8c0 }无忧脚本 T)k6_7o3~&b8c
无忧脚本;S y9Pjb;} \V(B
// -->
(t?1@q9^'KeD:Y6n0 </script>无忧脚本|a3So id+m

4B@]%SE,|HA1Ws0                         <select name="ctl00$cphMain$StartYear" id="ctl00_cphMain_StartYear" onchange="check_date('StartDay','StartMonth','StartYear');">
"{([6w-GQu0         <option value="2004">2004</option>无忧脚本}'\ E.T^FZ Y
        <option value="2005">2005</option>无忧脚本 l~9@5I9f5f'i
        <option selected="selected"  value="2006">2006</option>无忧脚本4K2Z%HE$b'w5~
        <option value="2007">2007</option>
A.^tz+rI"X7V0         <option value="2008">2008</option>无忧脚本\[0G#s^,\\3DEmh
        <option value="2009">2009</option>无忧脚本|e6|n$Ye
        <option value="2010">2010</option>无忧脚本tP0O7~O
        <option value="2011">2011</option>
c#o$j4M u hdP"`0         <option value="2012">2012</option>
j `e ^ }K PawF0         <option value="2013">2013</option>无忧脚本I$n$a'le B.A(z-l
        <option value="2014">2014</option>无忧脚本X}O+j9gOEjRh
        <option value="2015">2015</option>
n7F8z2fi Q*? R&j6q(C%KL0         <option value="2016">2016</option>无忧脚本 yc9V^y)AB#fy|
        <option value="2017">2017</option>
'C*^uqx/SY0
*bR s x/n0 </select>无忧脚本lHpNE ~fR/V
                        <select name="ctl00$cphMain$StartMonth" id="ctl00_cphMain_StartMonth" onchange="check_date('StartDay','StartMonth','StartYear');">
6gv ~*Q M\/ns1\Hn0         <option value="1">1月</option>无忧脚本+u4nWa3\*`J
        <option value="2">2月</option>无忧脚本Y}5[QM'oR
        <option value="3">3月</option>
-S!IXv+M?__h0         <option value="4">4月</option>无忧脚本2JSs$@?/t_X
        <option value="5">5月</option>
L;eG~ F8T:r r1U]0         <option value="6">6月</option>
)} ?Lt6G]B G0         <option value="7">7月</option>无忧脚本 c;r6WJ k0p
        <option value="8">8月</option>
Ir(`H+`A ^#U0         <option value="9">9月</option>无忧脚本Vy(Q x6W5u4u
        <option value="10">10月</option>无忧脚本R M#d6bg-B
        <option value="11">11月</option>无忧脚本h4ZDQO \v`$T
        <option selected="selected" value="12">12月</option>无忧脚本+r0Hb-E D;yfg8Y
无忧脚本 qw u3V7CNe8M
</select>
vE$r ] \n@ fB3K0                         <select name="ctl00$cphMain$StartDay" id="ctl00_cphMain_StartDay" onchange="check_date('StartDay','StartMonth','StartYear');">
OZW2gNJ"l0         <option value="1">1</option>无忧脚本+g6g!@ m!_)C
        <option value="2">2</option>
&m||zd8euuC0         <option value="3">3</option>
[8v.^ I;o0         <option value="4">4</option>无忧脚本%j1dM M9eT s)|
        <option selected="selected" value="5">5</option>无忧脚本r){;bf8aFP
        <option value="6">6</option>无忧脚本0|vAA"O"tt J/_
        <option value="7">7</option>
O }(v3N5P*r0         <option value="8">8</option>
V0FQ/E~I*M0         <option value="9">9</option>无忧脚本ma f^ H eSDr
        <option value="10">10</option>无忧脚本L3rl:Wv8s
        <option value="11">11</option>
kU+I]A,k*bcS~N0         <option value="12">12</option>
3W"E Z(n,QD&bkc0         <option value="13">13</option>无忧脚本 J^^/w^ i_
        <option value="14">14</option>
}8K$`)d`%sj0Qh0         <option value="15">15</option>无忧脚本8np|*TH8`7^6cu'y
        <option value="16">16</option>无忧脚本-Q)^^K!\#R
        <option value="17">17</option>
&a|'q7L(s} C0         <option value="18">18</option>
3W;ZD4KFp-sj0         <option value="19">19</option>
!^nU|"s h2^i+c0         <option value="20">20</option>
W:@/g']9vMdG)}*OH/y0         <option value="21">21</option>
k z N)c8j#{0         <option value="22">22</option>
9A7tzEL-g4L0         <option value="23">23</option>
t,x!Ug0do]0         <option value="24">24</option>
]lb(e k d'vo7M+C0         <option value="25">25</option>
t%rx{"h@)U0         <option value="26">26</option>
.`6F]GFj PgR}?0         <option value="27">27</option>
h4^zz;D3o8B7B%K"L0         <option value="28">28</option>
If)m&? wQ0         <option value="29">29</option>无忧脚本7j;S Q,O5F
        <option value="30">30</option>无忧脚本bsS(b`r
        <option value="31">31</option>
Pl7w6`h/g6C0
&d-Yb0}P,q_U/Lg0 </select>
[ 本帖最后由 myhome 于 2006-12-15 21:44 编辑 ]

TAG:

biyuan老矣 biyuan 发布于2006-12-15 21:17:02
泣红亭斑竹曾写过一个日期选择类,我稍微扩展了一下:

CODE:

<select id="selYear"></select>年<select id="selMonth"></select>月<select id="selDay"></select>日<select id="selHours"></select>点
<script language="JavaScript">
function DateSelector(selYear,selMonth,selDay,selHours){
        this.selYear = selYear;
        this.selMonth = selMonth;
        this.selDay = selDay;
        this.selHours = selHours;
        this.selYear.Group = this;
        this.selMonth.Group = this;
        // 给年份、月份下拉菜单添加处理onchange事件的函数
        if(window.document.all != null){ // IE
                this.selYear.attachEvent("onchange", DateSelector.Onchange);
                this.selMonth.attachEvent("onchange", DateSelector.Onchange);
        }
        else{ // Firefox
                this.selYear.addEventListener("change", DateSelector.Onchange, false);
                this.selMonth.addEventListener("change", DateSelector.Onchange, false);
        }
        if(arguments.length == 4){ // 如果传入参数个数为4,最后一个参数必须为Date对象
                this.InitSelector(arguments[3].getFullYear(), arguments[3].getMonth() + 1, arguments[3].getDate());
        }
        else{
                if(arguments.length == 6){ // 如果传入参数个数为6,最后三个参数必须为初始的年月日数值
                        this.InitSelector(arguments[3], arguments[4], arguments[5]);
                }
                else{ // 默认使用当前日期
                        var dt = new Date();
                        this.InitSelector(dt.getFullYear(), dt.getMonth() + 1, dt.getDate() , dt.getHours());
                }
        }
}

// 增加一个最大年份的属性
DateSelector.prototype.MinYear = 2006;

// 增加一个最大年份的属性
DateSelector.prototype.MaxYear = (new Date()).getFullYear();

// 初始化年份
DateSelector.prototype.InitYearSelect = function(){
        // 循环添加OPION元素到年份select对象中
        for(var i = this.MaxYear; i >= this.MinYear; i--){
                // 新建一个OPTION对象
                var op = window.document.createElement("OPTION");
                // 设置OPTION对象的值
                op.value = i;
                // 设置OPTION对象的内容
                op.innerHTML = i;
                // 添加到年份select对象
                this.selYear.appendChild(op);
        }
}

// 初始化月份
DateSelector.prototype.InitMonthSelect = function(){
        // 循环添加OPION元素到月份select对象中
        for(var i = 1 ; i < 13 ; i ++){
                // 新建一个OPTION对象
                var op = window.document.createElement("OPTION");
                 // 设置OPTION对象的值
                op.value = i;
                // 设置OPTION对象的内容
                op.innerHTML = i;
                // 添加到月份select对象
                this.selMonth.appendChild(op);
        }
}

// 初始化小时
DateSelector.prototype.InitHoursSelect = function(){
        // 循环添加OPTION元素到小时select对象中
        for(var i = 0 ; i < 24 ; i ++){
                var op = window.document.createElement("OPTION");
                op.value = i;
                op.innerHTML = i;
                this.selHours.appendChild(op);
        }
}

// 根据年份与月份获取当月的天数
DateSelector.DaysInMonth = function(year, month){
        var date = new Date(year, month, 0);
        return date.getDate();
}

// 初始化天数
DateSelector.prototype.InitDaySelect = function(){
        // 使用parseInt函数获取当前的年份和月份
        var year = parseInt(this.selYear.value);
        var month = parseInt(this.selMonth.value);
        // 获取当月的天数
        var daysInMonth = DateSelector.DaysInMonth(year, month);
        // 清空原有的选项
        this.selDay.options.length = 0;
        // 循环添加OPION元素到天数select对象中
        for(var i = 1; i <= daysInMonth ; i++){
                // 新建一个OPTION对象
                var op = window.document.createElement("OPTION");
                // 设置OPTION对象的值
                op.value = i;
                // 设置OPTION对象的内容
                op.innerHTML = i;
                // 添加到天数select对象
                this.selDay.appendChild(op);
        }
}

// 处理年份和月份onchange事件的方法,它获取事件来源对象(即selYear或selMonth)
// 并调用它的Group对象(即DateSelector实例,请见构造函数)提供的InitDaySelect方法重新初始化天数
// 参数e为event对象
DateSelector.Onchange = function(e){
        var selector = window.document.all != null ? e.srcElement : e.target;
        selector.Group.InitDaySelect();
}

// 根据参数初始化下拉菜单选项
DateSelector.prototype.InitSelector = function(year,month,day,hours){
        // 由于外部是可以调用这个方法,因此我们在这里也要将selYear和selMonth的选项清空掉
        // 另外因为InitDaySelect方法已经有清空天数下拉菜单,因此这里就不用重复工作了
        this.selYear.options.length = 0;
        this.selMonth.options.length = 0;
        this.selHours.options.length = 0;
       
        // 初始化年、月、小时
        this.InitYearSelect();
        this.InitMonthSelect();
        this.InitHoursSelect();
       
        // 设置年、月初始值
        this.selYear.selectedIndex = this.MaxYear - year;
        this.selMonth.selectedIndex = month - 1;
        this.selHours.selectedIndex = hours;
       
        // 初始化天数
        this.InitDaySelect();
       
        // 设置天数初始值
        this.selDay.selectedIndex = day - 1;
}

var selYear = window.document.getElementById("selYear");
var selMonth = window.document.getElementById("selMonth");
var selDay = window.document.getElementById("selDay");
var selHours = window.document.getElementById("selHours");
new DateSelector(selYear,selMonth,selDay,selHours,new Date());
</script>

小虫子的世界 myhome 发布于2006-12-15 21:36:50
biyuan 斑竹好人啊,感谢!无忧脚本5Q7`~^;I
_M{G

无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSL8U~{6M9L4r8D
原先苦于对JS搞不懂,只好用ASP这样苯搞:无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COMhkuy|!N X-n/L r\x'X

'?4D~
JvI~!?/bwww.51js.com
<%
$B)S8wed_无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSLdim i,kwww.51js.com4Rt6q0OMIx huS8^
k=2018无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COM {;\#JvY[uE9D
for i=2005 to k无忧脚本-//体验编写HTML代码的乐趣 - 51JS.COMSNIS)yJ+aJ:z
j

if i=year(now()) thenwww.51js.com`9j&Uo kK"T
Response.Write("<option selected=""selected"" value="""&i&""">"&i&"</option>"&chr(13)&chr(10))
'Y H
hZS
A+I无忧脚本
else无忧脚本q3`~
R*W

Response.Write("<option value="""&i&""">"&i&"</option>"&chr(13)&chr(10))
*AyL&{7Ia4F&na-//体验编写HTML代码的乐趣 - 51JS.COMend if%D!W\u-Xq
next
2w6CGq"fq(U无忧脚本%>无忧脚本W:{YkI8`MJ,y%bx

#_4P;_[8UZo_无忧脚本,无忧,脚本,JavaScript,JS,HTML,DHTML,CSS,XML,XSL现在好了,看来还得用心来学JS啊,不过能力有限,只能慢慢来了,再次感谢!
我来说两句

(可选)