`

JQ 日期联动插件

阅读更多
/*
 * jQuery Date Selector Plugin
 * 日期联动选择插件
 *
 * Demo:
$("#calendar").DateSelector({
    ctlYearId: <年控件id>,
    ctlMonthId: <月控件id>,
    ctlDayId: <日控件id>,
    defYear: <默认年>,
    defMonth: <默认月>,
    defDay: <默认日>,
    minYear: <最小年|默认为1882年>,
    maxYear: <最大年|默认为本年>
});
HTML:<div id="calendar"><SELECT id=idYear></SELECT>年 <SELECT id=idMonth></SELECT>月 <SELECT id=idDay></SELECT>日</div>
 */
(function ($) {
    //SELECT控件设置函数
    function setSelectControl(oSelect, iStart, iLength, iIndex) {
        oSelect.empty();
        for (var i = 0; i < iLength; i++) {
            if ((parseInt(iStart) + i) == iIndex)
                oSelect.append("<option selected='selected' value='" + (parseInt(iStart) + i) + "'>" + (parseInt(iStart) + i) + "</option>");
            else
                oSelect.append("<option value='" + (parseInt(iStart) + i) + "'>" + (parseInt(iStart) + i) + "</option>");
        }
    }

    $.fn.DateSelector = function (options) {
        options = options || {};

        //初始化
        this._options = {
            ctlYearId: null,
            ctlMonthId: null,
            ctlDayId: null,
            defYear: 0,
            defMonth: 0,
            defDay: 0,
            minYear: 1882,
            maxYear: new Date().getFullYear()
        }

        for (var property in options) {
            this._options[property] = options[property];
        }

        this.yearValueId = $("#" + this._options.ctlYearId);
        this.monthValueId = $("#" + this._options.ctlMonthId);
        this.dayValueId = $("#" + this._options.ctlDayId);

        var dt = new Date(),
        iMonth = parseInt(this.monthValueId.attr("data") || this._options.defMonth),
        iDay = parseInt(this.dayValueId.attr("data") || this._options.defDay),
        iMinYear = parseInt(this._options.minYear),
        iMaxYear = parseInt(this._options.maxYear);

        this.Year = parseInt(this.yearValueId.attr("data") || this._options.defYear) || dt.getFullYear();
        this.Month = 1 <= iMonth && iMonth <= 12 ? iMonth : dt.getMonth() + 1;
        this.Day = iDay > 0 ? iDay : dt.getDate();
        this.minYear = iMinYear && iMinYear < this.Year ? iMinYear : this.Year;
        this.maxYear = iMaxYear && iMaxYear > this.Year ? iMaxYear : this.Year;

        //初始化控件
        //设置年
        setSelectControl(this.yearValueId, this.minYear, this.maxYear - this.minYear + 1, this.Year);
        //设置月
        setSelectControl(this.monthValueId, 1, 12, this.Month);
        //设置日
        var daysInMonth = new Date(this.Year, this.Month, 0).getDate(); //获取指定年月的当月天数[new Date(year, month, 0).getDate()]
        if (this.Day > daysInMonth) { this.Day = daysInMonth; };
        setSelectControl(this.dayValueId, 1, daysInMonth, this.Day);

        var oThis = this;
        //绑定控件事件
        this.yearValueId.change(function () {
            oThis.Year = $(this).val();
            setSelectControl(oThis.monthValueId, 1, 12, oThis.Month);
            oThis.monthValueId.change();
        });
        this.monthValueId.change(function () {
            oThis.Month = $(this).val();
            var daysInMonth = new Date(oThis.Year, oThis.Month, 0).getDate();
            if (oThis.Day > daysInMonth) { oThis.Day = daysInMonth; };
            setSelectControl(oThis.dayValueId, 1, daysInMonth, oThis.Day);
        });
        this.dayValueId.change(function () {
            oThis.Day = $(this).val();
        });
    }
})(jQuery);

 

demo.html

<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>jQuery 多级联动下拉菜单</title>
</head>
<body>
<div id="dateSelector">
<select id="idYear" name="idYear" data=""></select>年 <select id="idMonth" name="idMonth" data="12"></select>月 <select id="idDay" name="idDay" data="1"></select>日
</div>
<script type="text/javascript" src="jquery-1.10.1.min.js"></script>
<script type="text/javascript" src="date.js"></script>
<script>
$(function(){
	var myDate = new Date();
	$("#dateSelector").DateSelector({
		ctlYearId: 'idYear',
		ctlMonthId: 'idMonth',
		ctlDayId: 'idDay',
		defYear: myDate.getFullYear(),
		defMonth: (myDate.getMonth()+1),
		defDay: myDate.getDate(),
		minYear: 1800,
		maxYear: (myDate.getFullYear()+1)
	});
});
</script>
</body>
</html>

 

效果图:

 

 

 

 

 

 

 

 

 

 

  • 大小: 25.4 KB
1
0
分享到:
评论

相关推荐

    jq 日期控件 可选择时间,日期,星期等等

    "jq 日期控件 可选择时间,日期,星期等等" 是一个专为JavaScript(js)环境设计的日期选择插件,它提供丰富的功能,让用户能够方便地选择日期、时间甚至是星期。下面我们将深入探讨这个主题。 首先,`jq`通常指的...

    jQuery年月日三级联动(生日)插件

    "jQuery年月日三级联动(生日)插件"就是为了简化这一过程而设计的,它使得用户能更直观、高效地选择日期,提高了用户体验。这个插件通过将年、月、日分别作为三个下拉菜单,实现联动效果,即用户在选择一个年份后,...

    js日期三级联动-滑动选择.rar

    这个“js日期三级联动-滑动选择.rar”压缩包提供了一个解决方案,适用于PC和H5平台,旨在优化用户体验,实现日期选择的三级联动功能。下面我们将详细探讨这个功能的实现原理以及涉及到的相关知识点。 1. **日期选择...

    jQuery带日期区间的日期选择插件

    4. **事件监听**:插件提供了丰富的事件接口,如日期改变、区间选择完成等,便于进行联动操作和数据处理。 5. **API控制**:开发者可以通过JavaScript API来初始化、设置或获取日期,实现动态控制。 ### 使用方法 ...

    省市联动+日期选择,.net+jquery

    在.NET框架下,结合jQuery和JavaScript技术,可以创建出高效、友好的用户界面,其中“省市联动”和“日期选择”是常见的功能需求,尤其在用户注册页面中尤为重要。这两个功能提高了用户输入的便捷性和准确性,提升了...

    240多个jQuery插件.doc

    时间、日期和颜色选取插件 - **jQuery UI Datepicker**: 功能丰富的日期选择器。 - **jQuery Datepicker plugin**: 简洁的日期选择器。 - **jQuery TimePicker**: 时间选择器。 - **Farbtastic jQuery Color Picker...

    YMDClass年月日三级联动纯JS封装类精简插件

    【标题】"YMDClass年月日三级联动纯JS封装类精简插件"是一个用于网页表单的日期选择组件,旨在实现用户友好的交互体验。这个插件使用JavaScript编程语言,无需依赖其他库如jQuery,因此在轻量级项目中尤为适用。它...

    jQuery年月日三级联动(生日)

    在网页开发中,用户输入有时需要精确到日期,如填写生日等个人信息时。为了提高用户体验,年、月、日的三级联动选择器被广泛应用。jQuery作为一款轻量级的JavaScript库,提供了丰富的DOM操作和事件处理功能,非常...

    jquery select操作的日期联动实现代码

    总的来说,jQuery提供的这些工具和插件极大地简化了对`&lt;select&gt;`元素的操作,使得在Web应用中实现日期联动和其他动态交互变得轻松。在实际开发中,结合CSS和Ajax,我们可以构建出更加智能和用户友好的界面。

    jquery省市区三级联动

    更新日期为2022年2月,意味着数据是最新的,覆盖了中国的所有行政区域。 "城市选择"通常涉及地理信息系统(GIS),但在这里,它更侧重于用户界面的交互。为了实现联动效果,需要在选择每个层级时动态更新下一级别的...

    基于jquery的H5移动端选择器,日期选择器,自定义级联选择器,自定义html选择器

    日期选择器是网页应用中常见的一种控件,主要用于用户输入日期或选择日期。基于jQuery的H5移动端日期选择器可以提供直观、易用的用户界面,支持触摸操作,并能根据手机屏幕尺寸进行适配。通常,这样的选择器会包含年...

    jquery插件表

    以上是jQuery插件的一些典型示例,它们覆盖了文件上传、表单验证、选择框处理、表单基础、时间日期选择以及搜索和评级等功能。这些插件极大地扩展了jQuery的功能,让开发者能够快速构建功能丰富的交互式网页应用。

    日期年月日三级连动选择demo(超简单)

    日期选择简易demo,非常方便使用,没有使用插件.完全js,jq代码实现.非常方便,下载过来直接可用! 免积分下载 https://download.lllomh.com/cliect/#/product/J417124329840643

    jQuery移动端多级选择(可自定义)插件

    通过这个插件,开发者可以轻松创建适应不同场景的多级选择器,不仅限于常见的下拉菜单,还能扩展到特定的需求,例如时间选择器(可能包括日期、时间和时区的选择),以及地理位置选择器(如省市区三级联动)。...

Global site tag (gtag.js) - Google Analytics