日期选择组件

    在开发过程中,偶尔会碰到相同内容多处使用的情况。同一种处理办法,却要相互间互不影响。

    以下是个人在项目开发中碰到的一个日期选择组件。HTML5提供了input type = "date",但是由于其兼容性,连IE10都无法启用。所以必须考虑使用其它办法。在此之前考虑了JQ UI的日期时间选择。但介于文件超过400KB,这对于一般小型网站,流量资源十分珍贵的情况下还是自己开发一个直接、简单、轻巧。

JS代码如下:

使用方式,十分简单,

var b = new A($(‘#two‘));   // 使用A构造函数创建一个对象,传入一个JQ元素对象。如想修改也可在头部修改部分代码。
b.init();                            // 初始化各种方法,即可。

var A = function(one){

var createfn = function(){
$(‘<button></button><div class="select-date"><select name="year">1111</select><select name="month"></select><select name="date"></select></div>‘).appendTo(one);
/*button点击,显示日期选择*/
one.find(‘button‘).on(‘click‘,function(){
var disp = one.find(‘.select-date‘).css(‘display‘);
disp = disp == ‘block‘ ? ‘none‘:‘block‘;
one.find(‘.select-date‘).css(‘display‘,disp);
});
};

/*获取今天的日期*/
var getTodayDatefn = function(){
var todayDate = new Date();
var string = todayDate.getFullYear()+‘-‘+(todayDate.getMonth()+1)+‘-‘+todayDate.getDate();
one.find(‘button‘).html(string);
};

/*加载日期选择*/
var loadDateSelectfn = function(){
/*加载年选择*/
var yearSelect = one.find(‘select[name="year"]‘);
var monthSelect = one.find(‘select[name="month"]‘);
var date = new Date();
var nowYear = date.getFullYear();
for(var i=nowYear;i>2004;i--){
$(‘<option value="‘+i+‘">‘+i+‘</option>‘).appendTo(yearSelect);
};

/*加载固定的12个月*/
for(var m=1;m<13;m++){
$(‘<option value="‘+m+‘">‘+m+‘</option>‘).appendTo(monthSelect);
};
};

/*根据不同的月和年,加载不同的天数*/
function loadDaysfn(){
var yearSelect = one.find(‘select[name="year"]‘);
var monthSelect = one.find(‘select[name="month"]‘);
var daySelect = one.find(‘select[name=date]‘);
var getYear = yearSelect.val();
var getMonth = parseInt(monthSelect.val());
var run,bigMonth,runMonth;
var bigMonthArray = [1,3,5,7,8,10,12];

/*判断是否为闰年*/
if(getYear%4 == 0){
run = true;
}else{
run = false;
}

/*判断是否为闰月*/
runMonth = getMonth !=2 ? false:true;

/*判断是大月还是小月*/
var bigOrlitter = $.inArray(getMonth,bigMonthArray);
bigMonth = bigOrlitter>=0 ? true:false;

//记录天数,判断退出条件
var days;
/*依据之前的判断条件加载天数*/
if(bigMonth){
//大月
days = 32;
}else{
//小月
if(!runMonth){
//不是二月
days = 31;
}else{
//是二月
if(run){
//并且是闰月
days = 30;
}else{
//不是闰月
days = 29;
}
}
}
daySelect.html(‘‘);
for(var i=1;i<days;i++){
$(‘<option value="‘+i+‘">‘+i+‘</option>‘).appendTo(daySelect);
};
};

/*修改日期选择,相应的修改button中的显示*/
var changeBtnfn = function(){
one.delegate(‘select‘,‘change‘,function(){
var yearSelect = one.find(‘select[name="year"]‘);
var monthSelect = one.find(‘select[name="month"]‘);
var daySelect = one.find(‘select[name=date]‘);
var year1 = yearSelect.val();
var month = monthSelect.val();
var theDate = daySelect.val();
var but = year1+‘-‘+month+‘-‘+theDate;
one.find(‘button‘).html(but);
});
}

/*year,month的改变,改变daySelect的天数*/
var changeDaysfn = function(){
one.delegate(‘select[name="year"],select[name="month"]‘,‘change‘,function(){
//change days select‘s day number.
loadDaysfn();

});
};

/*init初始化*/
var init = function(){
createfn();
getTodayDatefn();
loadDateSelectfn();
loadDaysfn();
changeBtnfn();
changeDaysfn();
};

return {
init:init
};
};

/*--------使用部分------------------*/
var b = new A($(‘#two‘));
b.init();

css代码根据具体情况而定,为方便浏览用户直接使用,可将以下代码拷入style标签中:

/*
[email protected]
date @2014.10.17
[email protected] the date.
*/
.dateDiv{
width:160px;
height: 30px;
position: relative;
}
.dateDiv button{
width:160px;
height: 30px;
font-size: 16px;
font-weight: bold;
cursor: pointer;
}
.select-date{
position: absolute;
width:150px;
top:35px;
left:0;
border:1px solid black;
padding:5px;
margin-right: -3px;
display: none;
}
.select-date select{
float: left;
margin-right: 3px;
cursor: pointer;
}

这一组使用十分方便,当然功能也十分单一,只有一个选择日期的作用。在组件写法上目前处于探路阶段,往诸位高手指点新人。

时间: 2024-11-08 07:07:17

日期选择组件的相关文章

react-native DatePicker日期选择组件的实现

本教程的实现效果如下: 为了实现其淡入/淡出的覆盖效果, 还有取消按钮, 在此用了一个三方的组件, 大家可以先安装一下: 三方组件的地址:https://github.com/eyaleizenberg/react-native-custom-action-sheet (可以看看,也可以直接按我的步骤走) 1. 在terminal的该工程目录下运行: npm install react-native-custom-action-sheet --save 2. 然后运行: npm start 3.

Flex自定义组件开发之日周月日期选择日历控件

原文:Flex自定义组件开发之日周月日期选择日历控件 使用过DateField的我们都知道,DateField 控件是用于显示日期的文本字段,字段右侧带有日历图标.当用户在控件边框内的任一位置单击时,将弹出一个 DateChooser 控件,显示当月的所有日期.如果未选择日期,则该文本字段为空白,并且 DateChooser 控件中将显示当前日期的月份.当 DateChooser 控件处于打开状态时,用户可以在各个月份和年份之间滚动,并选择某个日期.选择日期后,DateChooser 控件关闭,

element-ui日期组件DatePicker设置日期选择范围Picker Options

element-UI提供了DatePicker日期选择器组件,可以让我们很方便的获取到日期,默认的选择是全部的日期都可以选择的,但是很多场景中我们要对日期选择范围做限定,比如出行日期就不能选过去的日期,订票时间要限制日期范围 官网提供了picker-options参数可以设置日期选择范围,具体操作看代码 // 页面引入组件, 加上picker-options这个参数 <el-date-picker v-model="exCheckDate" type="date&quo

iview的table组件中加入超链接组件,可编辑组件,选择组件,日期组件

这篇文章主要介绍了iview的table组件中使用选择框,日期,可编辑表格,超链接等组件. 1.select选择组件 // tableColumn数组响应对象需要传入一个固定的option数组,如果该数组是异步动态生成的该组件不能正常渲染,因为在获取option数组之前table渲染时option是undefined. supportSelect(item) { item.render = (h, params)=>{ return h('Select', { props: { value: p

JavaScript:日期选择器组件的使用

前言: 在实际项目开发中,日期选择是一个十分常见而且重要的问题,在表单中设计到日期的验证时,如果让用户自己输入时间的话,那么使用正则进行验证其正确性是不可取的,因为他一般只能验证日期的格式,无法准确的验证其日期正确性.此时可以使用日期选择器组件来帮助我们完整. 用法: 使用日期在选择其组件其实很简单,我们只需要在*.html文件里面引入日期选择器的*.js文件,并在input输入框中设置'onclick'事件即可. 演示: 现在我使用两种日期选择器组件进行演示,: 第一个是:My97DatePi

Ext4.X--年月选择组件

1.类的定义: 在Ext项目开发中,有时会用到只选择年月的日期组件,下面的代码会帮你完成,只需向下面的类拷贝到你的项目中即可使用. Ext.define('Ext.form.field.Month', { extend:'Ext.form.field.Date', alias: 'widget.monthfield', requires: ['Ext.picker.Month'], alternateClassName: ['Ext.form.MonthField', 'Ext.form.Mon

Android界面编程——日期时间组件(五)

Android界面编程--日期时间组件 2.6日期时间组件 2.6.1 TextClock 以文本的方式显示系统日期和时间,可以自定义显示格式,是 Android4.2(对应API Level 17)提供的新特性. TextClock有两种格式设置方式: 1. 在24小时模式: 属性:android:format24Hour 方法:set Format24Hour(CharSequence) 2. 在12小时模式: 属性:android: format12Hour 方法:set Format12

跟我学Android之九 日期时间组件

本章内容 第1节 AnalogClock和DigitalClock 第2节  CalendarView 第3节  DatePicker和TimerPicker 第4节  Chronometer 第5节   Timer类 本章目标 掌握图形时钟和数字时钟的用法. 掌握日历视图的用法. 熟练掌握日期和时间选择器的用法. 熟练掌握Chronometer的用法. 熟练掌握Timer类的用法. AnalogClock是一个模拟时钟视图,使用AnalogClock标签进行布局,除了长宽外基本需要其他属性,对

webapp中的日期选择

你是否在开发webapp时,选择用哪种第三方日期选择控件绞尽脑汁? 其实不用那么麻烦,现在移动端都是WebKit内核,支持HTML5,其实只要弱弱的将input中将type="date"就OK了,操作系统会自动识别为日期类型并调用系统自带的日期选择.不用在意日期控件的样式不统一,因为who cares?o(╯□╰)o,大家都是盯着自己的手机,谁选个日期还去比较其他手机呢? 最近看见有个比较牛逼的日期选择插件mobiscroll,网上的口碑特别好,我也下载过来玩了一下,之所以说他牛逼不完