zoukankan      html  css  js  c++  java
  • datepicker 日期连续选择(需要改源码)

    先上效果:

    代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>日期选择</title>
    <link rel="stylesheet" href="reset-jquery-ui.min.css" />
    <script type="text/javascript" src="jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="jquery-ui.js"></script>
    <script type="text/javascript">
    //日期选择
    $.datepicker.regional['zh-CN'] = {
        clearText: '清除',
        clearStatus: '清除已选日期',
        closeText: '关闭',
        closeStatus: '不改变当前选择',
        prevText: '<上月',
        prevStatus: '显示上月',
        prevBigText: '<<',
        prevBigStatus: '显示上一年',
        nextText: '下月>',
        nextStatus: '显示下月',
        nextBigText: '>>',
        nextBigStatus: '显示下一年',
        currentText: '今天',
        currentStatus: '显示本月',
        monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
        monthNamesShort: ['', '', '', '', '', '', '', '', '', '', '十一', '十二'],
        monthStatus: '选择月份',
        yearStatus: '选择年份',
        weekHeader: '',
        weekStatus: '年内周次',
        dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
        dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
        dayNamesMin: ['', '', '', '', '', '', ''],
        dayStatus: '设置 DD 为一周起始',
        dateStatus: '选择 m月 d日, DD',
        dateFormat: 'yy-mm-dd',
        firstDay: 1,
        initStatus: '请选择日期',
        isRTL: false
    };
    $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
    
    var a = 0;
    var tmpdate = "";
    
    /**
      * 实例化日期控件,并绑定回调函数,传入相应参数
      * tagId 日期控件实例化的标签id
      * ajaxMethod 回调函数
      * ajaxMethod 函数需要用到的额外参数
      **/
    function datePickerById(tagId){
        $(tagId).datepicker( {
            isDataChecked:true,
            autoClose:true,
            showOtherMonths: true,
            changeYear: true,
            //showStatus: true,
            //showOn: "both",
            numberOfMonths:2,//显示几个月
            showMonthAfterYear:true,
            onSelect: function(dateText,inst) {//选择日期后执行的操作
                a++;
                inst.autoClose = true;
                if(a==1){
                    inst.settings.isDataChecked = false;
                    tmpdate = dateText;
                }
                if(a==2){
                    a=0;
                    inst.settings.isDataChecked = false;
                    inst.autoClose = false;
                    var date1 = new Date(tmpdate).getTime();
                    var date2 = new Date(dateText).getTime();
    
                    var arg = {time_s:date1,time_e:date2}; //ajax函数要用到的时间参数
    
                    if(date1<date2){
                          $(tagId).val(tmpdate.replace(/-/ig,"-")+""+dateText.replace(/-/ig,"-"));
                      }else if(date1 == date2){
                        a = 1;
                        inst.settings.isDataChecked = false;
                        inst.autoClose = true;
                      }else{
                          $(tagId).val(dateText.replace(/-/ig,"-")+""+tmpdate.replace(/-/ig,"-"));
                      }
                }
    
            }
        });
    }
    </script>
    </head>
    <body>
    时间选择:<input id="div1" style="height:30px;190px;"/>
    <script type="text/javascript">
    datePickerById('#div1');
    </script>
    </body>
    </html>

    基于jquery UI 1.11.4修改如下(在源码里面修改):

    /* Hide the date picker from view.
         * @param  input  element - the input field attached to the date picker
         */
        _hideDatepicker: function(input) {
            var showAnim, duration, postProcess, onClose,
                inst = this._curInst;
    
            if (!inst || (input && inst !== $.data(input, "datepicker"))) {
                return;
            }
            /**
                 * 2015.6.11 修改
                 * author:link
                 * 增加inst.autoClose控制日历面板
                 */
    // -----------------------------------------------------------------------------------------
     if (this._datepickerShowing||!inst.autoClose) { showAnim = this._get(inst, "showAnim"); duration = this._get(inst, "duration"); postProcess = function() { $.datepicker._tidyDialog(inst); }; // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed if(inst.autoClose===true){ // 这里不隐藏 }else{ if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); } else { inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); } }
    // -----------------------------------------------------------------------------------------
    if (!showAnim) { postProcess(); } this._datepickerShowing = false; onClose = this._get(inst, "onClose"); if (onClose) { onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); } this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); if ($.blockUI) { $.unblockUI(); $("body").append(this.dpDiv); } } this._inDialog = false; } },

    1.11.4修改后完整源码

    链接:http://pan.baidu.com/s/1bnjQycv 密码:hr19

  • 相关阅读:
    最近实际项目中遇到的技术问题与解决思路
    独立完成一个城市选择组件(阿里前端题目,内附知识点、思路)
    用Node.js写爬虫,撸羞羞的图片
    Flutter项目之app升级方案
    Flutter数据持久化入门以及与Web开发的对比
    为什么要学会正则表达式
    async/await,了解一下?
    面向面试题和实际使用谈promise
    从一次输入框无法输入的bug,谈如何限制输入框输入类型
    Vue组件的is具体用法
  • 原文地址:https://www.cnblogs.com/cssfirefly/p/4570937.html
Copyright © 2011-2022 走看看