收藏一些封装的常用方法


//计算两个日期之间相差的天数(因为这里是计算工期,所有默认都加一,即2016-01-01与2016-01-02得到结果为两天工期)参数形式:strDate与endDate均为:'xxxx-xx-xx'
 
function getBetweenDates(strDate,endDate){
    var sDate = new Date(strDate);
    var eDate = new Date(endDate);
    var fen = ((eDate.getTime()-sDate.getTime())/1000)/60;
    var distance = parseInt(fen/(24*60))+1; //相隔distance天
    return distance;
}


//四舍五入函数 , 参数p 为保留精度 默认为2        round(3.1415,3)  =>  3.142
function round(n,p){
    n = n-0;
    
    p = p || 2;
    
    var m = Math.pow(10,p);
    
    return Math.round(n * m) / m;
}


//给定一个时间日期,返回一个格式化日期,   formatDate(new Date())  =》  "2018-08-06"
function formatDate(date){
    var month = (date.getMonth()+1);
    var day = date.getDate();

    if(month < 10 ){
        month = "0"+month;
    }

    if(day < 10){
        day = "0"+day;
    }    
    
    return date.getFullYear() +"-"+month+"-"+day;
}



//获取一个日期的前一天日期
function getLastDay(d){
    var date = d || new Date();
    var year = date.getFullYear();
    var month = (date.getMonth()+1);
    var day = date.getDate();
    
    if(day == 1){
        month -= 1;
        
        if(month == 0){
            month = 12;
            year -= 1;
        }
        
        if(month == 2){
            if(leap(year)){
                day = 29
            }else{
                day = 28
            }
        }else{
            if(month == 1 
                || month == 3 
                || month == 5 
                || month == 7 
                || month == 8 
                || month == 10 
                || month == 12 ){
                day = 31;
            }else{
                day = 30;
            }
            
        }
    }

    if(month < 10 ){
        month = "0"+month;
    }    

    if(day < 10){
        day = "0"+day;
    }    
    
    return year +"-"+month+"-"+day;
}


//判断闰年
function leap(year){
    if(year % 4 == 0 && (year % 1000 != 0 || year % 400 == 0 ) ){
        return true;
    }else{
        return false;
    }
}



//校验只能输入数字(正数、负数、小数)·
function checkNoNum(obj,event){
    event = window.event||event; 
    if(event.keyCode == 37 | event.keyCode == 39){ 
        return; 
    } 
   obj.value = obj.value.replace(/[^\d-.]/g,""); 
}



//验证由数字和26个英文字母组成的字符串
function checkNumAndStr(val,event){
    var flag = false;
    if(/^[A-Za-z0-9]+$/.test(val)){
        flag = true;
    }
    return flag;
}
function checkNumAndStrOn(obj,event){
    event = window.event||event; 
    if(event.keyCode == 37 | event.keyCode == 39){ 
        return; 
    } 
    if(!/^[A-Za-z0-9]+$/.test(obj.value)){
        obj.value = "";
    }
}



//给定日期区间是否相隔几个月,s1和s2是给定区间,格式为yyyy-MM-dd。month是相差月份。如果是返回true,如果不是,返回false
function monthDifferent(beginDate,endDate,month){
    var beginD = beginDate.split("-");
    var endD = endDate.split("-");

    var beginDates = new Date(beginD[0],beginD[1]-1,beginD[2]);
    var endDates = new Date(endD[0],endD[1]-1,endD[2]);

    var d1Year = beginDates.getFullYear();
    var d1Month = beginDates.getMonth();
    var d1Date = beginDates.getDate();

    var a = new Date(d1Year,d1Month+month,d1Date);
    var b = new Date(d1Year,d1Month-month,d1Date);
    if(a<=endDates || b>=endDates){
        return false;
    }else{
        return true;
    }                             
}



//获取上一个月
function getAfterMonth() {
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    if (month == 1) {
        year = year -1;
        month = 12;
    } else {
        month = month -1;
    }
    var afterMonth = {
        year:year,
        month:month < 10 ? "0"+month : month
    };
    return afterMonth;
}



//获取当前年之前的年份
function getCurYearToBefore(endYear){
    var yearArr = new Array();
    var date = new Date();
    var curYear = date.getFullYear();
    var n = curYear - endYear;
    for(var i=0;i<=n;i++){
        var _yearArr = new Array();
        var _year = curYear-i;
        _yearArr.push(_year+"");
        _yearArr.push(_year+"年");
        yearArr.push(_yearArr)
    }
    return yearArr;
}



//获取所有月份
function getAllMonth(){
    var monthArr = new Array();
    for(var i=1;i<13;i++){
        var _monthArr = new Array();
        var _month = "";
        if(i<10){
            _month = "0"+i
        }else{
            _month = i;
        }
        _monthArr.push(_month+"");
        _monthArr.push(_month+"月");
        monthArr.push(_monthArr);
    }
    return monthArr;
}


//原生Ajax封装

function ajax_method(url,data,method,success) {
    // 异步对象
    var ajax = new XMLHttpRequest();

    // get 跟post  需要分别写不同的代码
    if (method=='get') {
        // get请求
        if (data) {
            // 如果有值
            url+='?';
            url+=data;
        }else{

        }
        // 设置 方法 以及 url
        ajax.open(method,url);

        // send即可
        ajax.send();
    }else{
        // post请求
        // post请求 url 是不需要改变
        ajax.open(method,url);

        // 需要设置请求报文
        ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

        // 判断data send发送数据
        if (data) {
            // 如果有值 从send发送
            ajax.send(data);
        }else{
            // 木有值 直接发送即可
            ajax.send();
        }
    }

    // 注册事件
    ajax.onreadystatechange = function () {
        // 在事件中 获取数据 并修改界面显示
        if (ajax.readyState==4&&ajax.status==200) {
            // console.log(ajax.responseText);

            // 将 数据 让 外面可以使用
            // return ajax.responseText;

            // 当 onreadystatechange 调用时 说明 数据回来了
            // ajax.responseText;

            // 如果说 外面可以传入一个 function 作为参数 success
            success(ajax.responseText);
        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_39892932/article/details/81667941