如下图,翻页不选择也不关闭。点击指定年份时再选择和关闭控件

1、代码如下

  1. // 默认没有选择,把判断赋值当前时间
  2. var iYearCode = parseInt(new Date().getFullYear().toString());
  3. // 如果上一次选择了,但手动删除或修改了,再把判断赋值当前时间
  4. $("#yearCode").bind("input propertychange",function(event){
  5. var yearCode = $("#yearCode").val();
  6. if(undefined == yearCode || null == yearCode || yearCode.length < 4) {
  7. iYearCode = parseInt(new Date().getFullYear().toString());
  8. } else {
  9. iYearCode = parseInt(yearCode);
  10. }
  11. });
  12. layui.laydate.render({
  13. elem: '#yearCode'
  14. ,type:'year'
  15. ,showBottom: false
  16. ,change: function(value, date, endDate){
  17. // 获取翻页或点击选择年份数据
  18. var iValue = parseInt(value);
  19. // 获取一页年份列表个数,翻页的话,两个年份肯定等于列表年份个数长度
  20. var year_list = $(".laydate-year-list")[0].getElementsByTagName("li").length;
  21.  
  22. // 如果上一次选择和这次选择之间不超过年份列表个数,那么就是点击选择指定年份
  23. if(Math.abs(iYearCode - iValue) < year_list) {
  24. $('#yearCode').val(value);
  25. $('.layui-laydate').remove();
  26. }
  27. // 赋值给判断
  28. iYearCode = iValue;
  29. }
  30. });

2.1、或者:

  1. laydate.render({
  2. elem: '#archiveYear',
  3. max: new Date().getFullYear().toString(),
  4. type: 'year',
  5. value: new Date().getFullYear().toString(),
  6. isInitValue: true,
  7. trigger: 'click',
  8. showBottom: false,
  9. position: 'fixed',
  10. change: function (value, date, endDate) {
  11. if (this.min.year <= date.year && date.year <= this.max.year) {
  12. $(this.elem).val(value);
  13. } else if (date.year < this.min.year) {
  14. $(this.elem).val(this.min.year);
  15. } else if (date.year > this.max.year) {
  16. $(this.elem).val(this.max.year);
  17. }
  18. if (undefined == this.myYear) {
  19. this.myYearListLength = $(".laydate-year-list")[0].getElementsByTagName("li").length;
  20. if (this.value) {
  21. this.myYear = (parseInt(this.value) - (this.myYearListLength - 1)/2) + "年 - " + (parseInt(this.value) + (this.myYearListLength - 1)/2) + "年";
  22. } else {
  23. this.myYear = (new Date().getFullYear() - (this.myYearListLength - 1)/2) + "年 - " + (new Date().getFullYear() + (this.myYearListLength - 1)/2) + "年";
  24. }
  25. if ($('.laydate-set-ym').find('span[lay-type="year"]').html() == this.myYear) {
  26. $("#layui-laydate" + $(this.elem).attr('lay-key')).remove();
  27. } else {
  28. this.myYear = $('.laydate-set-ym').find('span[lay-type="year"]').html();
  29. }
  30. } else {
  31. if ($('.laydate-set-ym').find('span[lay-type="year"]').html() == this.myYear) {
  32. $("#layui-laydate" + $(this.elem).attr('lay-key')).remove();
  33. } else {
  34. this.myYear = $('.laydate-set-ym').find('span[lay-type="year"]').html();
  35. }
  36. }
  37. }
  38. });

2.2、方法抽取:

  1. laydate.render({
  2. elem: '#archiveYear',
  3. max: new Date().getFullYear().toString(),
  4. type: 'year',
  5. value: new Date().getFullYear().toString(),
  6. isInitValue: true,
  7. trigger: 'click',
  8. showBottom: false,
  9. position: 'fixed',
  10. change: function (value, date, endDate) {
  11. laydateYearSetValue(this, value, date);
  12. }
  13. });
  14.  
  15. /**
  16. * laydate的year类型设值,在change方法调用
  17. *
  18. * @param thiz change里面的this
  19. * @param value change的参数value
  20. * @param date change的参数date
  21. */
  22. function laydateYearSetValue(thiz, value, date) {
  23. if (thiz.min.year <= date.year && date.year <= thiz.max.year) {
  24. $(thiz.elem).val(value);
  25. } else if (date.year < thiz.min.year) {
  26. $(thiz.elem).val(thiz.min.year);
  27. } else if (date.year > thiz.max.year) {
  28. $(thiz.elem).val(thiz.max.year);
  29. }
  30. if (undefined == thiz.myYear) {
  31. thiz.myYearListLength = $(".laydate-year-list")[0].getElementsByTagName("li").length;
  32. if (thiz.value) {
  33. thiz.myYear = (parseInt(thiz.value) - (thiz.myYearListLength - 1)/2) + "年 - " + (parseInt(thiz.value) + (thiz.myYearListLength - 1)/2) + "年";
  34. } else {
  35. thiz.myYear = (new Date().getFullYear() - (thiz.myYearListLength - 1)/2) + "年 - " + (new Date().getFullYear() + (thiz.myYearListLength - 1)/2) + "年";
  36. }
  37. if ($('.laydate-set-ym').find('span[lay-type="year"]').html() == thiz.myYear) {
  38. $("#layui-laydate" + $(thiz.elem).attr('lay-key')).remove();
  39. } else {
  40. thiz.myYear = $('.laydate-set-ym').find('span[lay-type="year"]').html();
  41. }
  42. } else {
  43. if ($('.laydate-set-ym').find('span[lay-type="year"]').html() == thiz.myYear) {
  44. $("#layui-laydate" + $(thiz.elem).attr('lay-key')).remove();
  45. } else {
  46. thiz.myYear = $('.laydate-set-ym').find('span[lay-type="year"]').html();
  47. }
  48. }
  49. }

laydate年份选择,关闭底框,点击指定年份就选择然后关闭控件,翻页不选择也不关闭控件的更多相关文章

  1. gridView AspNetPager 翻页时 弹出窗体关闭报错

    gridView AspNetPager 翻页后,你右击刷新或F5会发现弹出一个刷新页面. 这是因为默认翻页都是用dopostback方式回发的.因为这时的页面已经不是原来的页面.所以会弹出提示. 这 ...

  2. (java)selenium webdriver学习,选择模块,点击下一页,获取当前url

    selenium webdriver学习,选择模块,点击下一页,获取当前url 查找下一页有多种方法,这里列举两种: isSelected()函数用于判断是否点击选中,返回Boolean类型 impo ...

  3. 原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板

    原创:用VBA实现将鼠标选择的单元格按照指定格式合并并复制到剪切板 一.主要实现以下功能:1.用鼠标选择单元格(可谓连续单元格,也可为不连续的)后,按照要求格式“证件号码:+选定内容+“,”+”选定内 ...

  4. [Selenium]点击下拉框之后,从下拉列表选择元素进行点击很容易失败

    点击下拉框之后,下拉列表会显示出来,但是有时候下拉列表会很快就消失掉,导致后面选择元素的时候会失败. 像这种情况,需要将鼠标移动到下拉列表上,使下拉列表维持显示,然后才选择元素进行点击. 将鼠标移动到 ...

  5. 如果没有指定Cookie的时效,那么默认的时效是。(选择1项)

    如果没有指定Cookie的时效,那么默认的时效是.(选择1项) A.一天 B. 永不过期 C.会话级别 D.一分钟 解答:C 这是API的原文:By default, -1 indicating th ...

  6. 简易数据分析 08 | Web Scraper 翻页——点击「更多按钮」翻页

    这是简易数据分析系列的第 8 篇文章. 我们在Web Scraper 翻页--控制链接批量抓取数据一文中,介绍了控制网页链接批量抓取数据的办法. 但是你在预览一些网站时,会发现随着网页的下拉,你需要点 ...

  7. easyUI datagrid中checkbox选中事件以及行点击事件,翻页之后还可以选中

    DataGrid其中与选择,勾选相关 DataGrid属性:singleSelect boolean 如果为true,则只允许选择一行. false ctrlSelect boolean 在启用多行选 ...

  8. 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 中的 Date 对象,在页面上显示一个万年历.选择不同的年份和月份,在页面中显示当前月的日历 实现思路: 在页面中添加两个 <s ...

  9. Atitit.ui控件---下拉菜单选择控件的实现select html

    Atitit.ui控件---下拉菜单选择控件的实现select   html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& m ...

随机推荐

  1. CF837D Round Subset 动态规划

    开始的时候数据范围算错了~ 我以为整个序列 2 和 5 的个数都不超过 70 ~ 一个非常水的 dp code: #include <bits/stdc++.h> #define M 75 ...

  2. 理解 __declspec

    “__declspec”是Microsoft c++中专用的关键字,它配合着一些属性可以对标准C++进行扩充.这些属性有:align.allocate.deprecated. dllexport.dl ...

  3. webpack 性能优化小结

    背景 如今前端工程化的概念早已经深入人心,选择一款合适的编译和资源管理工具已经成为了所有前端工程中的标配,而在诸多的构建工具中,webpack以其丰富的功能和灵活的配置而深受业内吹捧,逐步取代了gru ...

  4. 解决vue多个路由共用一个页面的问题

    在日常的vue开发中我们可能会遇见多个路由需要共用一个页面的需求,特别是当路由是通过动态添加的,不同的路由展示的东西只是数据不同其他没有变化.例如: ? 1 2 3 4 5 6 7 8 9 10 11 ...

  5. 修改rabbitmq web-UI端口号

    一.拷贝配置文件 [root@test03 ~]# cd /usr/share/doc/rabbitmq-server-3.6.15/ [root@test03 rabbitmq-server-3.6 ...

  6. Linux下MySQL的操作(最全)

    注意:这里以mariadb为例 启动mysql服务 systemctl start mariadb 登录mysql mysql -u root -p SQL语言分类 - 数据定义语言:简称[DDL]( ...

  7. CF293E Close Vertice

    如果没有边数限制就是裸的淀粉质,如果有了加上一个树状数组记边数就行了. #include<stdio.h> #include<stdlib.h> #include<str ...

  8. OpenFOAM Tutorial Standard Solvers【转载】

    转载自:http://www.cnblogs.com/fortran/articles/1996927.html boundaryFoam Steady-state solver for 1D tur ...

  9. pc电源cpu插座和显卡插座

    cpu插座是8口的,一般4+4 显卡插座是6口的,也有8口的用6+2 6+2的中2有一个小边,组合成8口也不能插入cpu插座.

  10. Leetcode题 257. Binary Tree Paths

    Given a binary tree, return all root-to-leaf paths. For example, given the following binary tree: 1 ...