`

简单日期下拉框

阅读更多

项目中用到一个级联、动态下拉选择日期框。我以前也收集过关于地区级联的,那时候是用别人代码。今天这个虽然简单但感觉自己还是进步满大,最起码是自己亲手写出来的。o(∩_∩)o...哈哈
   首先是php代码生成一个年月日的下拉组件。

 1 <? php
 2      echo   " <select id=\ "" .$statement. " _year\ "  onchange=\ " resetDate( ' ".$statement." ' )\ "  disabled> " ;
 3      for ( $i = 2003 ; $i <= 2015 ; $i ++ )
 4     {
 5          if ( $i == 2003 )
 6         {
 7              echo   " <option value=\ "" .$i. " \ "" . "  selected> " . $i . " </option> " ;
 8         }
 9          else
10         {
11              echo   " <option value=\ "" .$i. " \ " > " . $i . " </option> " ;    
12         }
13     }
14      echo   " </select>年 " ;
15      echo   " <select id=\ "" .$statement. " _month\ "  onchange=\ " resetDate( ' ".$statement." ' )\ "  disabled> " ;
16      for ( $i = 1 ; $i <= 12 ; $i ++ )
17     {
18          if ( $i == 1 )
19         {
20              echo   " <option value=\ "" .$i. " \ "" . "  selected> " . $i . " </option> " ;
21         }
22          else
23         {
24              echo   " <option value=\ "" .$i. " \ " > " . $i . " </option> " ;    
25         }
26     }
27      echo   " </select>月 " ;
28      echo   " <select id=\ "" .$statement. " _day\ "  disabled> " ;
29      for ( $i = 1 ; $i <= 28 ; $i ++ )
30     {
31          if ( $i == 1 )
32         {
33              echo   " <option value=\ "" .$i. " \ "" . "  selected> " . $i . " </option> " ;
34         }
35          else
36         {
37              echo   " <option value=\ "" .$i. " \ " > " . $i . " </option> " ;    
38         }
39     }
40      echo   " </select>日 " ;
41 ?>
42

也许你已经发现了,组件的ID我用了一个动态的。但是更让你气氛的是我居然把2月的日期都只写了28天。(其实应该写31天,必定默认选择的是1月吧)(难道是防止闰年2月用户却选择29,甚至选择30、31?)哈哈,你误会了。请看下面的javascript代码。
 1/**//*
 2 * @breif: 根据月份 以及年份调整日期的下拉选择天数
 3 * 
 4 */

 5function changDay(obj)
 6{
 7    var year_id = obj+"_year";
 8    var month_id = obj+"_month";
 9    var day_id = obj+"_day";
10    var year = Arr_year[parseInt(document.getElementById(year_id).selectedIndex)];
11    var month = Arr_month[parseInt(document.getElementById(month_id).selectedIndex)];
12    //获取下拉框
13    var select = document.getElementById(day_id);
14    //获取下拉框列表
15    var options  = document.getElementById(day_id).options;
16    var len = options.length;
17    //大月情况,即有31号
18    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
19    {
20        while(len<31)
21        {
22            //增加一个元素
23            options[len]=new Option(len+1,len+1);
24            len++;
25        }

26    }

27    else if(month==4||month==6||month==9||month==11)//小月,但不为2月
28    {
29        while(len<30)
30        {
31            //增加一个元素
32            options[len]=new Option(len+1,len+1);            
33            len++;
34        }

35        while(len>30)
36        {
37            //删除一个元素
38            select.remove(len-1);
39            len--;
40        }

41    }

42    else if(month==2&&(year%4==0&&year%100!=0||year%400==0))
43    {
44        while(len>28)
45        {
46            //删除一个元素
47            select.remove(len-1);
48            len--;
49        }

50    }
else
51    {
52        while(len<29)
53        {
54            //增加一个元素
55            options[len]=new Option(len+1,len+1);            
56            len++;
57        }

58        while(len>29)
59        {
60            //删除一个元素
61            select.remove(len-1);
62            len--;
63        }

64    }

65}

66/**//*
67 * @breif: 选择年份 或者月份后 重置日期为1
68 */

69function resetDate(obj)
70{
71    var state_Flag = obj+"_day";
72    document.getElementById(state_Flag).selectedIndex=0;
73    changDay(obj);
74}

这里利用了简单的dom编程,根据年月来通过事件动态增删下拉列表选择组件。

最近到处问级联怎么写的人不少。实际上我这里只是我写的一个简单的算法,你大可不必想这么细,想想方法,知道怎么来着就ok了。

比如我就在写这篇博客的时候想到用ajax,动态取数据,那时候用ajax不是试过动态替换div嘛,当然也可以替换option原色的。但是总不适合刷新页面的,所以用脚本或者ajax比较正常。

当然我们下拉框也许不多。比我的这种。那么我们还可以同时放几个select组件在那里,然后根据事件(即用户对其他选项的操作)控制其是否显示或者不显示哪个select。

大家可以谈论啊。不一定要什么太专业,我们可以有很多想法,有不同的想法,也希望大家分享,赐教。

ps:记得从前有人参加计算机考试,题目是让写程输出:(大概意思了吧)

*
**
***
****
*****
(也许没有这么规则,大概是要求用某种算法的形式。)
1. 有人用了比较传统的书上方法

2. 我当时用了一个字符串“*****”循环打印其子串;

3. 不过有一哥们,直接就是:
system.out.println("*");
system.out.println("*"*);
……
事后,谁能说他是错的(相反我觉得那小子不错!),老师一定满无奈的(当时不是学了)。(o(∩_∩)o...哈哈)必定那不是他考题的目的吧。
分享到:
评论

相关推荐

    ASP 简单实现日期下拉菜单

    ASP 简单实现日期下拉菜单 ASP 简单实现日期下拉菜单 ASP 简单实现日期下拉菜单

    JQuery 年月日三级下拉框联动

    一个直制的JQuery 年月日三级下拉框联动 使用方法非常简单 &lt;title&gt;JQuery 年月日三下拉框联动 &lt;script src="jquery-1.4.2.min.js" type="text/javascript"&gt;&lt;/script&gt; ...

    迅速插入年份、月份、日期的下拉菜单

    简单方便 的年份、月份、日期的下拉菜单 适用于 dreamweaver

    网页特效——时间日期篇4

    包括文字时间显示,无限扩展的年份选择,...又一日期选择,月有阴晴圆缺,柱状时间显示,准确的计时器,准确的时间选择框,自动显示版权时间,自己创建日历,最简单的倒计时,最简单的日期,最简单时钟,最简单时间显示

    纯JS实现出生日期[年月日]下拉菜单效果

    用户注册 设计很多信息,其中就有 关于出生日期的,出于用户体验,不想让用户手动输入,而HTML5的date,目前很多浏览器支持的并不是很好,所以就可以用JS实现年、月、日3个下拉框的日期选择。具体代码如下: 1、新建...

    该资源为一个前端使用的日期插件,适用于手机端日期

    手机端日期插件,格式yyyy-MM-dd,代码比较简单,也可以稍微改造,将之改造成为三级联动的省市县下拉框,自己根据需要改造,逻辑清晰简单。

    Bootstrap编辑表格插件

    包含bootstrap可编辑表格、下拉框、日期三个控件,功能齐全,使用简单,用法请参见http://blog.csdn.net/lzxadsl

    vue-date-pick:基于 Vue 的轻量级和移动友好的日期时间选择器。 Vue 日期选择强调所有屏幕尺寸上的性能、优雅和可用的 UI 以及配置的简单性。 不依赖于 css 框架或日期库。 重量小于 5KB

    Vue日期选择 基于 Vue 的轻量级和移动友好的日期时间选择器。 Vue 日期选择强调所有屏幕尺寸上的性能、优雅和可用的 UI 以及配置的简单性。 不依赖于 css 框架或日期库。 重量小于 5KB。 文档和演示 。

    vue复杂的form表单封装和使用

    1、该组件封装了表单中的输入框、密码框、文本域、下拉框、单选、多选、日期、文件上传、按钮等元素; 2、动态设置表单排列样式; 3、使用slot,灵活修改元素; 4、组件可以直接使用,使用简单,方便,有使用示例和...

    嵩嵩问卷调查系统2017 v1.1

    附件上传简单的设置即可设计一个实用的问卷自动生成二维码,手机扫一扫通过手机访问其它后台路径:/admin后台帐号:admin后台密码:admin试用版提交的问卷不验证验证码与数据的有效性,统计分析只统计部分数据。

    实验课题二、简单物料进仓/出仓信息管理

    实验课题二、简单物料进仓/出仓信息管理 企业物料进出仓的信息管理,物料进出仓的信息主要包括进出仓单号、进出仓日期、操作人员代码、备注、物料代码、进仓数量、出仓数量等 1.企业仓库进出仓信息表以“班级+座号...

    基于jquery 下拉式日期控件

    前段时做了一个网站项目,用到目前比较流行的强悍的日期控件,结果客户不喜欢,说好上网上的不会用。要简洁、简单。嘿,后来没办法,自己上手从写了一个。结果客户很满意。嘿。不再说废话,上代码: 高手们看了,提...

    Python tkinter 下拉日历控件代码

    网上找的不完善的Tk日历进行修改的,可以快捷的找到并返回日期。 效果如下图,上面的是控件,下面的是调用demo窗口 如下所示: # -*- coding: utf-8 -*- import calendar import tkinter as tk import tkinter....

    bootstrap插件

    包含bootstrap可编辑表格、下拉框、日期三个控件,功能齐全,使用简单,用法请参见http://blog.csdn.net/lzxadsl js目录

    U8+快速开发工具.7z

    使用快速开发工具开发的单据与U8标准单据风格一致,可通过数据库脚本的简单调整设置单据上字段格式(文本、日期、参照、下拉框)等。使用快速开发工具开发的单据可以注册单据插件实现复杂逻辑编写。 快速开发工具是...

    U8快速客户化开发工具-基础介绍

    使用快速开发工具开发的单据与U8标准单据风格一致,可通过数据库脚本的简单调整设置单据上字段格式(文本、日期、参照、下拉框)等。使用快速开发工具开发的单据可以注册单据插件实现复杂逻辑编写。 快速开发工具是...

    淘金筛(数据王国的“BaiDu”超级搜索过滤)

    相等、不等、大于、大于或等于、小于、小于或等于、两者之间、列举多个(相等) 3、模糊匹配 字段列下拉框选择一项,操作类型下拉框选择包含操作,直接在过滤输入中输入包含的数字或文本或日期即可查找过滤。...

    jQuery EasyUI 1.3 API 中文教程

    简单的布局面板 - EasyLoader 页面布局 - Border Layout 在控制面板上布局 - Border Layout on Panel 控制面板 - Panel 控制面板与工具 - Panel With Tools 复杂的页面布局 - Complex Layout 折叠面板-...

    bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法

    筒子们在使用bootstrap的日期控件(datepicker , 现在官网提供的名称叫 datetimepicker)时可能会遇到如上图的问题这是啥原因造成的呢? 答案很简单时输出的优先级造成的(z-index) z-index 的值越大优先级越高 就...

    嵩嵩报名系统(多项目版) v4.1.zip

    1. 自由组合设计单行文本,多行文本,单选框,多选框,下拉框,多级下拉框,组合单选框,日期时间,图片上传,附件上传多种表单项目 2. 验证规则选择后,可以修改数字部分,例如 maxlength=5 可以修改为 maxlength=15 3. ...

Global site tag (gtag.js) - Google Analytics