扩展日期插件

1请扩展日期插件(/date/js/jq.date.js),使其在select后面自动加上“年”、 “月”、“日”;并添加一个参数(lang)控制语言选择;当lang为“chs”时如图1效果,当lang为“eng”如图2效果;

图 1

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>下拉日期插件</title>
</head>
<script src="http://libs.baidu.com/jquery/1.8.3/jquery.js"></script>
<script type="text/javascript" src="js/jq.date.js"></script>
<script type="text/javascript">
$(function(){
    $("#demo").jqDate();
})
</script>
</head>

<body>
<h1 align="center">DEMO</h1>
<p align="center"><input name="date" id="demo" type="text" value="" /></p>
</body>
</html>

jq.date.js

/********下拉框式的日期选择器******/
(function($){
$.fn.extend({
        jqDate:function(opt,callback){
            /*函数区域*/
            var getNowYear = function(){
                //得到现在的年
                var date = new Date();
                return date.getFullYear();
            }
            var getNowMonth = function(){
                //得到现在的月
                var date = new Date();
                return date.getMonth()+1;
            }
            var getNowDay = function(){
                //得到现在的日
                var date = new Date();
                return date.getDate();
            }
            /*判断是否闰年*/
            var isLeapYear = function(year)
          {
          return (0==year%4&&((year%100!=0)||(year%400==0)));
          }
            /*END*/
            
            /*参数定义*/
            defaults = {
                yearBegin: 1960            //开始年(默认为:1960年)
                ,yearEnd: getNowYear()    //结束年(默认为:当前年)
                ,yearEnabled:true        //年选择框是否启用(默认为:启用)
                ,monthEnabled:true        //月选择框是否启用(默认为:启用)
                ,dayEnabled:true        //日选择框是否启用(默认为:启用)
            }
            $.extend(defaults, opt);
            //可遍历添加多个
            $(this).each(function(){
                var _this=this;
                var el=$(this);
                el.hide();//隐藏原有的输入框
                var elval=el.val();
                var elDate = new Date(elval.split("-").join("/"));
                var oldYear = elDate.getFullYear();//取得输入框里的年值
                var oldMonth=elDate.getMonth()+1;//取得输入框里的月值(月初始是从0开始)
                var oldDay=elDate.getDate();//取得输入框里的日值
                var daysInMonth =new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);//每一个月份相应的天数
                if (isNaN(oldYear))oldYear=getNowYear();
                if (isNaN(oldMonth))oldMonth=getNowMonth();
                if (isNaN(oldDay))oldDay=getNowDay();
                /*创建年下拉框*/
                var selectYear=document.createElement("select");
                selectYear.id=_this.id+"_selectYear";
                selectYear.disabled=defaults.yearEnabled?false:true;
                for (var i=defaults.yearEnd;i>=defaults.yearBegin;i--)
                {
                    var option = document.createElement("option");
                    option.value = i;
                    option.innerHTML = i;
                    //如果等于当前年就选中
                    if (!isNaN(oldYear)) {
                        if (i == oldYear) {
                            option.selected = true;
                        }
                    }
                    selectYear.appendChild(option);
                    option = null;
                }
                //加入控件到文本框的位置
                el.after(selectYear);

/*END*/

/*创建月下拉框*/
                var selectMonth=document.createElement("select");
                selectMonth.id=_this.id+"_selectMonth";
                selectMonth.disabled=defaults.monthEnabled?false:true;
                for (var i=1;i<=12;i++)
                {
                    var option = document.createElement("option");
                    option.value = i;
                    option.innerHTML = i;
                    //如果等于当前年就选中
                    if (!isNaN(oldMonth)) {
                        if (i == oldMonth) {
                            option.selected = true;
                        }
                    }
                    selectMonth.appendChild(option);
                    option = null;
                }
                //加入控件到文本框的位置
                $(selectYear).after(selectMonth);
                $(selectMonth).before(" ");
                /*END*/

/*创建日下拉框*/
                var selectDay=document.createElement("select");
                selectDay.id=_this.id+"_selectDay";
                selectDay.disabled=defaults.dayEnabled?false:true;
                var dayCount=daysInMonth[$(selectMonth).val()-1];//天数
                if (oldMonth==2 && isLeapYear($(selectYear).val()))dayCount++;
                $(selectDay).CreateDay(dayCount,oldDay);
                //加入控件到文本框的位置
                $(selectMonth).after(selectDay);
                $(selectDay).before(" ");
                /*END*/

/*绑定下拉框事件*/
                //年下拉框值改变时
                $(selectYear).change(function(){
                    var thisYear=this.value;//选中的年
                    var dayCount=daysInMonth[$(selectMonth).val()-1];//天数
                    if (oldMonth==2 && isLeapYear($(selectYear).val()))dayCount++;
                    $(selectDay).CreateDay(dayCount,oldDay);
                    return updateValue();
                });
                //月下拉框值改变时
                $(selectMonth).change(function(){
                    var selectyear=$(selectYear).val();//选中的年
                    var dayCount=daysInMonth[$(selectMonth).val()-1];//天数
                    if (this.value==2 && isLeapYear(selectyear))dayCount++;
                    $(selectDay).CreateDay(dayCount,oldDay);
                    return updateValue();
                });
                //日下拉框值改变时
                $(selectDay).change(function(){
                    return updateValue();
                });
                /*END*/
                /*实时更新输入框的值*/
                var updateValue=function(){
                    el.val($(selectYear).val()+"-"+$(selectMonth).val()+"-"+$(selectDay).val());
                };
                /*END*/
            });
            return this;
        },
        //生成日期下拉框
        CreateDay:function(dayCount,oldDay){
                var me=this.get(0);
                $(this).empty();
                for (var i=1;i<=dayCount;i++)
                {
                    var option = document.createElement("option");
                    option.value = i;
                    option.innerHTML = i;
                    //如果等于当前年就选中
                    if (!isNaN(oldDay)) {
                        if (i == oldDay) {
                            option.selected = true;
                        }
                    }
                    me.appendChild(option);
                    option = null;
                }
        }
})
})(jQuery);

图 2

<!doctype html>
<html>
<head lang="chs">
<meta charset="utf-8">
<title>下拉日期插件</title>
</head>
<script src="http://libs.baidu.com/jquery/1.8.3/jquery.js"></script>
<script type="text/javascript" src="js/jq.date.js" language="eng" id="dateJs"></script>
<script type="text/javascript">
$(function(){
    $("#demo").jqDate();
    if ($("#dateJs").attr("language") == "eng") {
        $("#Years").text("Year");
        $("#Months").text("Month");
        $("#Days").text("Day");
    }
    else if ($("#dateJs").attr("language") == "chs") {
        ("#Years").text("年");
        $("#Months").text("月");
        $("#Days").text("日");
    };
})
</script>
</head>

<body>
<h1 align="center">日期</h1>
<p align="center"><input name="date" id="demo" type="text" value="" /></p>
</body>
</html>

时间: 2024-10-24 21:52:49

扩展日期插件的相关文章

jsp日期插件My97DatePicker

jsp日期插件My97DatePicker 强大的日期控件 使用方便简单 (2010-10-30 18:59:12) 转载▼ 标签: js javascript 日期插件 jsp it 分类: jquery 本文属转载(希望对编程爱好者有所帮助)详情请访问官方网站 http://www.my97.net/dp/index.asp 一. 简介 1. 简介 目前的版本是:4.7 2. 注意事项 My97DatePicker目录是一个整体,不可破坏里面的目录结构,也不可对里面的文件改名,可以改目录名

js日期插件

推荐一款贤心写的js日期插件,调用非常方便:顺手写了一个demo. 先列举下这款插件的优点:日期范围限制.开始日期设定.自定义日期格式.时间戳转换.当天的前后若干天返回.时分秒选择.智能响应.自动纠错.节日识别.快捷键操作.更换皮肤等. 当然还有很重要的一点是使用简单: 代码如下: <!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>data_

jquery 扩展和插件的写法

1.jquery扩展的方法常用的就是$.fn.xxx, 这个我理解的其实扩展jquery 实例中的属性或者方法 (function ($) { $.fn.alertSelf = function () { $(this).on('click',function () { alert( $(this).html() ); }) } })(jQuery); 这个扩展jquery实例中的方法,使用方法$("#idxx").alertSelef() 给某个节点添加了一个绑定弹出自身内容的方法

行为扩展以及插件机制

在thinkPHP中的行为扩展和插件机制. 首先行为扩展这个概念是TP框架的核心组成之一,关于行为的解释我就粗略的概括一下吧: TP在从接受到HTTP请求到最终将试图输出,期间经历的很多步骤,这些步骤大家可以在http://document.thinkphp.cn/manual_3_2.html#system_process这里面看到. 那么行为扩展实际上就是在这些流程里面买下了一个钩子,你可以往钩子里添加你自己的业务逻辑 当程序执行到某些钩子位置时将自动触发你的业务逻辑,http://docu

jquery ui bootstrap日期插件

http://blog.csdn.net/php_897721669/article/details/7404527 搜索“jquery ui日期插件怎么显示年份”? $("#datepicker").datepicker({ dateFormat:'yy-mm-dd', //更改时间显示模式 showAnim:"slide", //显示日历的效果slide.fadeIn.show等 changeMonth:true, //是否显示月份的下拉菜单,默认为false

(转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明

(原)http://www.cnblogs.com/hxling/archive/2012/12/12/2814207.html jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明 近期在移动方面的开发,使用jQuery Mobile ,移动方面的插件不如Web 方面的插件多,选择的更少,有一些需要自己去封装,但功力尚不足啊. 日期插件JQM也提供了内置的,但样式方面不好看,只好百度.Google啦,找到了两款 jquery-mobile-datebox 和 

Mobiscroll日期插件使用

相关资源 官方帮助文档:https://docs.mobiscroll.com/3-0-1 导入资源文件 <link href="${webRoot}/template/green/wap/module/member/medicinebox/statics/css/mobiscroll.css" type="text/css" rel="stylesheet" /> <link href="${webRoot}/tem

jQuery Mobile 移动开发中的日期插件Mobiscroll使用说明

近期在移动方面的开发,使用jQuery Mobile ,移动方面的插件不如Web 方面的插件多,选择的更少,有一些需要自己去封装,但功力尚不足啊. 日期插件JQM也提供了内置的,但样式方面不好看,只好百度.Google啦,找到了两款 jquery-mobile-datebox 和 mobiscroll-2.3 jqueryMobileDatebox 这个在板上的表现不好,性能方面有点卡 mobiscroll 性能方面比前者要好一些,效果更简洁 ,划动更流畅 放在一起对比下 各位看官,你们觉得哪个

jquery-ui里日期插件的使用

HTML为 <input type="text" id="starttime" readonly /> <input type="text" id="endtime" readonly /> 设置readonly属性,则输入框不可写: 引入必要的js文件和css文件 <link rel="stylesheet" type="text/css" href=&q