php option选择日期,日历、日期选择函数(修改下,觉得非常好用)

/**

* jQuery.jSelectDate Version 0.2

* jQuery 下拉列表选择日期插件

*

* Wathon Team

* http://www.wathon.com

* http://huacn.cnblogs.com

* http://www.cnblogs.com/huacn/archive/2008/01/16/jquery_plugin_jSelectDate.html

*

* created by:

* 李华顺 fyj

* 更改说明:原来的是指定起始和结束年份;改为指定以当前年为起点,向前和向后个加减多少年即参数yearBefore,yearAfter //2008-12-23*//** *****************   Example   ***********************

$("body").ready(function(){

$("input.date").jSelectDate({

css:"date",

yearBefore : 0,//当前年份的前几年

yearAfter : 10,//当前年份的后几年

disabled : true

});

})

* ****************  End Example  ***********************/varjSelectDate={/**

* 选项设置*/settings : {

css:"date",

borderCss:"date",

disabled:false,

yearBefore :10,

yearAfter :10,

isShowLabel:true},/**

* 初始化对向

* @param {Object} el 用于存放日期结果的文本框 jQuery DOM*/init:function(els){

els.each(function(){varel=$(this);/*取得旧的日期*/varelValue=el.val();

elDate=newDate(elValue.split("-").join("/"));varnYear=elDate.getFullYear();varnMonth=jSelectDate.returnMonth(elDate.getMonth());varnDay=elDate.getDate();/*隐藏给出的对向*/el.hide();/*先算出当前共有多少个jSelectDate*/varcurrentIdx=$("jSelectDateBorder").length+1;/*加入控件到文本框的位置*/varspanDate=document.createElement("span");

spanDate.id="spanDate"+currentIdx;

spanDate.className="jSelectDateBorder"+jSelectDate.settings.borderCss;

spanDate.disabled=jSelectDate.settings.disabled;

el.after(spanDate);/*创建年*/varselYear=document.createElement("select");

selYear.id="selYear"+currentIdx

selYear.className=jSelectDate.settings.css;

selYear.disabled=jSelectDate.settings.disabled;/*加入选项*/varbegin=jSelectDate.settings.yearNow-jSelectDate.settings.yearBefore;varend=jSelectDate.settings.yearNow+jSelectDate.settings.yearAfter;for(vari=begin; i<=end; i++) {varoption=document.createElement("option");

option.value=i;

option.innerHTML=i;/*判断是否有旧的值,如果有就选中*/if(!isNaN(nYear)) {if(i==nYear) {

option.selected=true;

}

}

selYear.appendChild(option);

option=null;

}

$(spanDate).append(selYear);/*创建月*/varselMonth=document.createElement("select");

selMonth.id="selMonth"+currentIdx

selMonth.className=jSelectDate.settings.css;

selMonth.disabled=jSelectDate.settings.disabled;/*加入选项*/for(vari=1; i<=12; i++) {varoption=document.createElement("option");

option.value=i;

option.innerHTML=i;/*判断是否有旧的值,如果有就选中*/if(!isNaN(nMonth)) {if(i==nMonth) {

option.selected=true;

}

}

selMonth.appendChild(option);

option=null;

}/*加入控件到文本框的位置*/$(selYear).after(selMonth);/*创建日*/varselDay=document.createElement("select");

selDay.id="selDay"+currentIdx

selDay.className=jSelectDate.settings.css;

selDay.disabled=jSelectDate.settings.disabled;/*算出最大的天数*/varmaxDayNum=30;if(nMonth==2) {if(jSelectDate.isLeapYear(nYear)) {

maxDayNum=29;

}else{

maxDayNum=28;

}

}elseif(jSelectDate.isLargeMonth(nMonth)) {

maxDayNum=31;

}/*加入选项*/for(vari=1; i<=maxDayNum; i++) {varoption=document.createElement("option");

option.value=i;

option.innerHTML=i;/*判断是否有旧的值,如果有就选中*/if(!isNaN(nDay)) {if(i==nDay) {

option.selected=true;

}

}

selDay.appendChild(option);

option=null;

}/*加入控件到文本框的位置*/$(selMonth).after(selDay);if(jSelectDate.settings.isShowLabel) {

$(selMonth).before("年");

$(selDay).before("月");

$(selDay).after("日");

}else{

$(selMonth).before("");

$(selDay).before("");

}/*返回当前选择的日期*/vargetDate=function(){varyear=$(selYear).val();varmonth=$(selMonth).val();varday=$(selDay).val();

el.val(year+"-"+month+"-"+day);

}/**

* 给几个下拉列表加入更改后的事件*/$(selDay).change(function(){returngetDate();

});

$(selMonth).change(function(){

jSelectDate.progressDaySize(this,true);/*更新文本框中的日期*/returngetDate();

});

$(selYear).change(function(){

jSelectDate.progressDaySize(this,false);returngetDate();

});

})

},/**

* 判断是否闰年

* @param {Object} year

* @author 没剑 http://regedit.cnblogs.com*/isLeapYear :function(year){return(0==year%4&&((year%100!=0)||(year%400==0)));

},/**

* 判断是否是大月

* @param {Object} monthNum*/isLargeMonth :function(monthNum){varlargeArray=[true,false,true,false,true,false,true,true,false,true,false,true];returnlargeArray[monthNum-1];

},

returnMonth:function(num){vararr=newArray("1","2","3","4","5","6","7","8","9","10","11","12");returnarr[num];

},/**

* 创建一个Option对象

* @param {Object} value 值

* @param {Object} text 文本*/createOption :function(value,text){varoption=document.createElement("option");

option.value=value;

option.innerHTML=text;returnoption;

},/**

* 处理天数

* @param {Object} el 下拉列表对像

* @param {Object} isMonth 是否是月的下拉列表 或者就处理 年的下拉列表*/progressDaySize:function(el,isMonth){if(isMonth==true) {/*选择月时处理大月、小月和二月的情况*/varmonth=$(el).val();varyear=$($("select", $(el).parent())[0]).val()varselDay=$($("select", $(el).parent())[2]);if(month==2) {/*2月处理*/$("option:contains('31')", selDay).remove();

$("option:contains('30')", selDay).remove();/*闰年处理*/if(!jSelectDate.isLeapYear(year)) {

$("option:contains('29')", selDay).remove();

}else{if($("option:contains('29')", selDay).length==0) {

selDay.append(jSelectDate.createOption(29,29));

}

}

}elseif(!jSelectDate.isLargeMonth(month)) {/*小月处理*/if($("option:contains('30')", selDay).length==0) {

selDay.append(jSelectDate.createOption(30,30));

}

$("option:contains('31')", selDay).remove();

}else{/*大月处理*/if($("option:contains('30')", selDay).length==0) {

selDay.append(jSelectDate.createOption(30,30));

}if($("option:contains('31')", selDay).length==0) {

selDay.append(jSelectDate.createOption(31,31));

}

}

}else{/*处理闰年的二月问题*/varpanelDate=$(el).parent();varyear=$(el).val();varmonth=$($("select",panelDate)[1]).val()varselDay=$($("select",panelDate)[2]);if(month==2){

$("option:contains('31')",selDay).remove();

$("option:contains('30')",selDay).remove();if(!jSelectDate.isLeapYear(year)){

$("option:contains('29')",selDay).remove();

}else{if($("option:contains('29')",selDay).length==0){

selDay.append(jSelectDate.createOption(29,29));

}

}

}

}

}

}

jQuery.fn.jSelectDate=function(settings){vargetNowYear=function(){/*得到现在的年*/vardate=newDate();returndate.getFullYear();

}//alert(settings.yearBefore);jSelectDate.settings.yearNow=getNowYear();

$.extend(jSelectDate.settings, settings);

jSelectDate.init($(this));return$(this);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值