jQuery实现日期联动效果实例


Posted in Javascript onJuly 26, 2016

本文实例讲述了jQuery实现日期联动效果的方法。分享给大家供大家参考,具体如下:

实现目标:

jQuery实现日期联动效果实例

两个日期,有下拉框:

<head>
//导入jquery地址
<script src="jquery-1.7.2.min.js" language="JavaScript" type="text/javascript"></script>
<script type="text/javascript">
//startYear发生变化
function changeYear(str,isstart)
{
  var pre = "start";
  if(isstart == false)
  {
    pre = "end";
  }
  var startMonth = $(pre + "Month").value;
  if(startMonth == "")
  {
    var e = $(pre + "Month");
    optionClear(e);
    return;
  }
  var n = MonHead[startMonth - 1];
  if(startMonth == 2 && IsPinYear($(pre + "Year").value))
  {
    n++;
  }
  writeDay(n,pre);
}
function changeMonth(str,isstart)
{
  var pre = "start";
  if(isstart == false)
  {
    pre = "end";
  }
  var year = $(pre + "Year").value;
  if(year == "")
  {
    var e = $(pre + "Day");
    optionClear(e);
    return;
  }
  var n = MonHead[str - 1];
  if(str == 2 && IsPinYear($(pre + "Year")))
  {
    n++;
  }
  writeDay(n,pre);
}
function dateStart()
{
  var defaultStartY = "2011";
  var defaultStartM = "1";
  var defaultStartD = "14";
  var defaultEndY = "2011";
  var defaultEndM = "2";
  var defaultEndD = "23";
  MonHead = [31,28,31,30,31,30,31,31,30,31,30,31];
  var prestr = new Array("start","end");
  for(var j=0; j<2; j++)
  {
    var pre = prestr[j];
    //start 年
    var y = new Date().getFullYear();
    if(pre == "start")
    {
      //start初始选中前第10天
      var i_index = 0;
      for(var i=(y-10); i<=y; i++)
      {
        $(pre+"Year").options.add(new Option(""+i+"",i));
        if(i == defaultStartY)
        {
          $(pre+"Year").options[i_index].selected = true;
        }
        i_index++;
      }
    }
    else
    {
      var i_index =0;
      for(var i=(y-5); i<=y+5; i++)
      {
        $(pre+"Year").options.add(new Option(""+i+"",i));
        if(i == defaultEndY)
        {
          $(pre+"Year").options[i_index].selected = true;
        }
        i_index++;
      }
    }
    //start月
    defaultM = (pre == "start" ? defaultStartM : defaultEndM)
    for(var i = 1; i < 13; i++)
    {
      $(pre + "Month").options.add(new Option(""+i+"",i));
      if(i == defaultM)
      {
        $(pre + "Month").options[i-1].selected = true;
      }
    }
    //start日
    var n = MonHead[$(pre + "Month").value];
    if(new Date().getMonth == 1 && IsPinYear($(pre + "Year").value))
    {
      n++;
    }
    defaultD = (pre == "start" ? defaultStartD : defaultEndD)
    writeDay(n,pre);
    $(pre + "Day").options[defaultD-1].selected = true;
  }
}
function writeDay(n,pre)
{
  var e = $(pre + "Day");
  optionClear(e);
  for (var i=1; i<(n+1); i++)
  {
    e.options.add(new Option(""+i+"",i));
  }
}
function IsPinYear(year)
{
  return (0 == year%4 && (year%100 != 0 || year % 4 == 0));
}
function optionClear(e)
{
  for(var i=e.options.length; i>=0; i--)
  {
    e.remove(i);
  }
}
</script>
</head>
<body onload="dateStart()">
<p name="selectdate">
    从
    <select id="startYear" name="startYear" onchange="changeYear(this.value,true)">
    </select>
    年
    <select id="startMonth" name="startMonth" onchange="changeMonth(this.value,true)">
    </select>
    月
    <select id="startDay" name="startDay">
    </select>
    日
    到
    <select id="endYear" name="endYear" onchange="changeYear(this.value,false)">
    </select>
    年
    <select id="endMonth" name="endMonth" onchange="changeMonth(this.value,false)">
    </select>
    月
    <select id="endDay" name="endDay">
    </select>
    日
</p>
</body>

参考了一些代码,终于能实现了~~

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
jquery利用ajax调用后台方法实例
Aug 23 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
JavaScript中的ES6 Proxy的具体使用
Jun 16 Javascript
layer关闭当前窗口页面以及确认取消按钮的方法
Sep 09 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 Javascript
详解微信小程序工程化探索之webpack实战
Apr 20 Javascript
vue组件入门知识全梳理
Sep 21 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 #Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 #Javascript
JavaScript从0开始构思表情插件
Jul 26 #Javascript
只需五句话搞定JavaScript作用域(经典)
Jul 26 #Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 #Javascript
js获取html的span标签的值方法(超简单)
Jul 26 #Javascript
js无法获取到html标签的属性的解决方法
Jul 26 #Javascript
You might like
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php查询内存信息操作示例
2019/05/09 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
Webpack框架核心概念(知识点整理)
2017/12/22 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
python字典快速保存于读取的方法
2018/03/23 Python
django中forms组件的使用与注意
2019/07/08 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
django序列化serializers过程解析
2019/12/14 Python
Python字典底层实现原理详解
2019/12/18 Python
TensorFlow获取加载模型中的全部张量名称代码
2020/02/11 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
幼儿园开学温馨提示
2015/07/15 职场文书
聘任书的格式及模板
2019/10/28 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python