javascript

首页javascript
18
Jun
0

前端图片压缩上传(纯js的质量压缩,非长宽压缩)

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">
<title>XMLHttpRequest上传文件</title>
<script type="text/javascript">
    /*
    三个参数
    file:一个是文件(类型是图片格式),
    w:一个是文件压缩的后宽度,宽度越小,字节越小
    objDiv:一个是容器或者回调函数
    photoCompress()
     */
    function photoCompress(file,w,objDiv){
        var ready=new FileReader();
        /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/
        ready.readAsDataURL(file);
        ready.onload=function(){
            var re=this.result;
            canvasDataURL(re,w,objDiv)
        }
    }
    function canvasDataURL(path, obj, callback){
        var img = new Image();
        img.src = path;
        img.onload = function(){
            var that = this;
            // 默认按比例压缩
            var w = that.width,
                h = that.height,
                scale = w / h;
            w = obj.width || w;
            h = obj.height || (w / scale);
            var quality = 0.7;  // 默认图片质量为0.7
            //生成canvas
            var canvas = document.createElement('canvas');
            var ctx = canvas.getContext('2d');
            // 创建属性节点
            var anw = document.createAttribute("width");
            anw.nodeValue = w;
            var anh = document.createAttribute("height");
            anh.nodeValue = h;
            canvas.setAttributeNode(anw);
            canvas.setAttributeNode(anh);
            ctx.drawImage(that, 0, 0, w, h);
            // 图像质量
            if(obj.quality && obj.quality <= 1 && obj.quality > 0){
                quality = obj.quality;
            }
            // quality值越小,所绘制出的图像越模糊
            var base64 = canvas.toDataURL('image/jpeg', quality);
            // 回调函数返回base64的值
            callback(base64);
        }
    }
    /**
     * 将以base64的图片url数据转换为Blob
     * @param urlData
     *            用url方式表示的base64图片数据
     */
    function convertBase64UrlToBlob(urlData){
        var arr = urlData.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
        while(n--){
            u8arr[n] = bstr.charCodeAt(n);
        }
        return new Blob([u8arr], {type:mime});
    }
    var xhr;
    //上传文件方法
    function UpladFile() {
        var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
        var url = "后台图片上传接口"; // 接收上传文件的后台地址 

        var form = new FormData(); // FormData 对象

        if(fileObj.size/1024 > 1025) { //大于1M,进行压缩上传
            photoCompress(fileObj, {
                quality: 0.2
            }, function(base64Codes){
                //console.log("压缩后:" + base.length / 1024 + " " + base);
                var bl = convertBase64UrlToBlob(base64Codes);
                form.append("file", bl, "file_"+Date.parse(new Date())+".jpg"); // 文件对象
                xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
                xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
                xhr.onload = uploadComplete; //请求完成
                xhr.onerror =  uploadFailed; //请求失败

                xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
                xhr.upload.onloadstart = function(){//上传开始执行方法
                    ot = new Date().getTime();   //设置上传开始时间
                    oloaded = 0;//设置上传开始时,以上传的文件大小为0
                };

                xhr.send(form); //开始上传,发送form数据
            });
        }else{ //小于等于1M 原图上传
            form.append("file", fileObj); // 文件对象
            xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
            xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
            xhr.onload = uploadComplete; //请求完成
            xhr.onerror =  uploadFailed; //请求失败

            xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
            xhr.upload.onloadstart = function(){//上传开始执行方法
                ot = new Date().getTime();   //设置上传开始时间
                oloaded = 0;//设置上传开始时,以上传的文件大小为0
            };

            xhr.send(form); //开始上传,发送form数据
        }
    }

    //上传成功响应
    function uploadComplete(evt) {
        //服务断接收完文件返回的结果

        var data = JSON.parse(evt.target.responseText);
        if(data.success) {
            alert("上传成功!");
        }else{
            alert("上传失败!");
        }

    }
    //上传失败
    function uploadFailed(evt) {
        alert("上传失败!");
    }
    //取消上传
    function cancleUploadFile(){
        xhr.abort();
    }

    //上传进度实现方法,上传过程中会频繁调用该方法
    function progressFunction(evt) {
        var progressBar = document.getElementById("progressBar");
        var percentageDiv = document.getElementById("percentage");
        // event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
        if (evt.lengthComputable) {//
            progressBar.max = evt.total;
            progressBar.value = evt.loaded;
            percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
        }
        var time = document.getElementById("time");
        var nt = new Date().getTime();//获取当前时间
        var pertime = (nt-ot)/1000; //计算出上次调用该方法时到现在的时间差,单位为s
        ot = new Date().getTime(); //重新赋值时间,用于下次计算
        var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b
        oloaded = evt.loaded;//重新赋值已上传文件大小,用以下次计算
        //上传速度计算
        var speed = perload/pertime;//单位b/s
        var bspeed = speed;
        var units = 'b/s';//单位名称
        if(speed/1024>1){
            speed = speed/1024;
            units = 'k/s';
        }
        if(speed/1024>1){
            speed = speed/1024;
            units = 'M/s';
        }
        speed = speed.toFixed(1);
        //剩余时间
        var resttime = ((evt.total-evt.loaded)/bspeed).toFixed(1);
        time.innerHTML = ',速度:'+speed+units+',剩余时间:'+resttime+'s';
        if(bspeed==0) time.innerHTML = '上传已取消';
    }
</script>

</head>
<body>
<progress id="progressBar" value="0" max="100" style="width: 300px;"></progress>
<span id="percentage"></span><span id="time"></span>



<input type="file" id="file" name="myfile" accept="image/x-png, image/jpg, image/jpeg, image/gif"/>
<input type="button" onclick="UpladFile()" value="上传" />
<input type="button" onclick="cancleUploadFile()" value="取消" />
</body>
</html>

14
Jun
0

html里的图片contenttype=img/jpeg的用js实现另存为而不是直接在浏览器里显示

谷歌浏览器通过

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>Title</title>

</head>
<body>
<script>

function SaveAs(src)
{
    var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a");
    //地址
    save_link.href = src;
    save_link.download = src;
    var ev = document.createEvent("MouseEvents");
    ev.initMouseEvent(
            "click", true, false, window, 0, 0, 0, 0, 0
            , false, false, false, false, 0, null
    );
    save_link.dispatchEvent(ev);
}

</script>

<!--<form action="http://10.86.42.131:8080/upload" method="post" enctype="multipart/form-data">-->
    <!--<input type="file" name="fafafa">-->
    <!--<input type="submit">-->
<!--</form>-->


<button onclick="SaveAs('http://www.igap.cc/group1/M01/09/F4/ClZX0FsiIbyAMOVmAAAK-R0nvso050.txt')">dfdfdd</button>
</body>
</html>

26
May
0

一个方方正正的点击图片放大的脚本(不能支持手势放大缩小)

这个代码显示不是最漂亮的,但它代码漂亮简洁
要显示更加华丽一点的可以用以下插件:
http://photoswipe.com/

html预览图:
<td width="350">

<img class="pimg" height="100" width="100" src="/static/upload/2018_05/20180522_223815_493331.jpg" />
<img class="pimg" height="100" width="100" src="/static/upload/2018_05/20180522_223815_493331.jpg" />
<img class="pimg" height="100" width="100" src="/static/upload/2018_05/20180522_223815_493331.jpg" />

</td>

弹出框的容器:
<div id="outerdiv" style="position:fixed;top:0;left:0;background:rgba(0,0,0,0.7);z-index:9999;width:100%;height:100%;display:none;">

<div id="innerdiv" style="position:absolute;">
    <img id="bigimg" style="border:5px solid #fff;" src="" />
</div>

</div>

弹出脚本,如果有大小图 可以通过JS改变:
<script>

$(function(){
    $(".pimg").click(function(){
        var _this = $(this);//将当前的pimg元素作为_this传入函数
        imgShow("#outerdiv", "#innerdiv", "#bigimg", _this);
    });
});

function imgShow(outerdiv, innerdiv, bigimg, _this){
    var src = _this.attr("src");//获取当前点击的pimg元素中的src属性
    $(bigimg).attr("src", src);//设置#bigimg元素的src属性

        /*获取当前点击图片的真实大小,并显示弹出层及大图*/
    $("<img/>").attr("src", src).load(function(){
        var windowW = $(window).width();//获取当前窗口宽度
        var windowH = $(window).height();//获取当前窗口高度
        var realWidth = this.width;//获取图片真实宽度
        var realHeight = this.height;//获取图片真实高度
        var imgWidth, imgHeight;
        var scale = 0.95;//缩放尺寸,当图片真实宽度和高度大于窗口宽度和高度时进行缩放

        if(realHeight>windowH*scale) {//判断图片高度
            imgHeight = windowH*scale;//如大于窗口高度,图片高度进行缩放
            imgWidth = imgHeight/realHeight*realWidth;//等比例缩放宽度
            if(imgWidth>windowW*scale) {//如宽度扔大于窗口宽度
                imgWidth = windowW*scale;//再对宽度进行缩放
            }
        } else if(realWidth>windowW*scale) {//如图片高度合适,判断图片宽度
            imgWidth = windowW*scale;//如大于窗口宽度,图片宽度进行缩放
                        imgHeight = imgWidth/realWidth*realHeight;//等比例缩放高度
        } else {//如果图片真实高度和宽度都符合要求,高宽不变
            imgWidth = realWidth;
            imgHeight = realHeight;
        }
                $(bigimg).css("width",imgWidth);//以最终的宽度对图片缩放

        var w = (windowW-imgWidth)/2;//计算图片与窗口左边距
        var h = (windowH-imgHeight)/2;//计算图片与窗口上边距
        $(innerdiv).css({"top":h, "left":w});//设置#innerdiv的top和left属性
        $(outerdiv).fadeIn("fast");//淡入显示#outerdiv及.pimg
    });

    $(outerdiv).click(function(){//再次点击淡出消失弹出层
        $(this).fadeOut("fast");
    });
}

</script>

奇怪的是微信原生这段代码在我的手机上跑不起来Y的,空了再来找原因:
<script type="text/javascript">
var pic_list=['/static/upload/2018_05/20180522_223815_493331.jpg','/static/upload/2018_05/20180522_223815_493331.jpg'];
//点击图片时调用,groupid组号,index索引号
function showImg(groupid, index) {

alert('sss');
WeixinJSBridge.invoke('imagePreview', {
    'current' : pic_list[0],
    'urls' : pic_list
});

}
</script>

10
Jan
0

js日期操作

//将指定的毫秒数加到此实例的值上
Date.prototype.addMilliseconds = function (value) {
var millisecond = this.getMilliseconds();
this.setMilliseconds(millisecond + value);
return this;
};
//将指定的秒数加到此实例的值上
Date.prototype.addSeconds = function (value) {
var second = this.getSeconds();
this.setSeconds(second + value);
return this;
};
//将指定的分钟数加到此实例的值上
Date.prototype.addMinutes = function (value) {
var minute = this.addMinutes();
this.setMinutes(minute + value);
return this;
};
//将指定的小时数加到此实例的值上
Date.prototype.addHours = function (value) {
var hour = this.getHours();
this.setHours(hour + value);
return this;
};
//将指定的天数加到此实例的值上
Date.prototype.addDays = function (value) {
var date = this.getDate();
this.setDate(date + value);
return this;
};
//将指定的星期数加到此实例的值上
Date.prototype.addWeeks = function (value) {
return this.addDays(value * 7);
};
//将指定的月份数加到此实例的值上
Date.prototype.addMonths = function (value) {
var month = this.getMonth();
this.setMonth(month + value);
return this;
};
//将指定的年份数加到此实例的值上
Date.prototype.addYears = function (value) {
var year = this.getFullYear();
this.setFullYear(year + value);
return this;
};
日期格式化

Date.prototype.format = function(fmt) {
     var o = {
        "M+" : this.getMonth()+1,                 //月份
        "d+" : this.getDate(),                    //日
        "h+" : this.getHours(),                   //小时
        "m+" : this.getMinutes(),                 //分
        "s+" : this.getSeconds(),                 //秒
        "q+" : Math.floor((this.getMonth()+3)/3), //季度
        "S"  : this.getMilliseconds()             //毫秒
    };
    if(/(y+)/.test(fmt)) {
            fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
     for(var k in o) {
        if(new RegExp("("+ k +")").test(fmt)){
             fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
         }
     }
    return fmt;
};
//取当月最大天数
function getLastDay(year,month)
{
     var new_year = year;  //取当前的年份
     var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
     if(month>12)      //如果当前大于12月,则年份转到下一年
     {
         new_month -=12;    //月份减
         new_year++;      //年份增
     }
     var new_date = new Date(new_year,new_month,1);        //取当年当月中的第一天
     return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
};
var myDate = new Date();
end_day = getLastDay(myDate.getYear(),myDate.getMonth());
start_date = new Date(myDate.getYear(),myDate.getMonth(),1);
end_date = new Date(myDate.getYear(),myDate.getMonth(),end_day);
alert(start_date.format("yyyy-MM-dd"));
alert(end_date.format("yyyy-MM-dd"));

Js获取当前日期时间及其它操作

var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间

日期时间脚本库方法列表

Date.prototype.isLeapYear 判断闰年
Date.prototype.Format 日期格式化
Date.prototype.DateAdd 日期计算
Date.prototype.DateDiff 比较日期差
Date.prototype.toString 日期转字符串
Date.prototype.toArray 日期分割为数组
Date.prototype.DatePart 取日期的部分信息
Date.prototype.MaxDayOfDate 取日期所在月的最大天数
Date.prototype.WeekNumOfYear 判断日期所在年的第几周
StringToDate 字符串转日期型
IsValidDate 验证日期有效性
CheckDateTime 完整日期时间检查
daysBetween 日期天数差

js代码:

//---------------------------------------------------
// 判断闰年
//---------------------------------------------------
Date.prototype.isLeapYear = function()
{

return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));   

}

//---------------------------------------------------
// 日期格式化
// 格式 YYYY/yyyy/YY/yy 表示年份
// MM/M 月份
// W/w 星期
// dd/DD/d/D 日期
// hh/HH/h/H 时间
// mm/m 分钟
// ss/SS/s/S 秒
//---------------------------------------------------
Date.prototype.Format = function(formatStr)
{

var str = formatStr;   
var Week = ['日','一','二','三','四','五','六'];  

str=str.replace(/yyyy|YYYY/,this.getFullYear());   
str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));   

str=str.replace(/MM/,this.getMonth()>9?this.getMonth().toString():'0' + this.getMonth());   
str=str.replace(/M/g,this.getMonth());   

str=str.replace(/w|W/g,Week[this.getDay()]);   

str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());   
str=str.replace(/d|D/g,this.getDate());   

str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());   
str=str.replace(/h|H/g,this.getHours());   
str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());   
str=str.replace(/m/g,this.getMinutes());   

str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());   
str=str.replace(/s|S/g,this.getSeconds());   

return str;   

}

//+---------------------------------------------------
//| 求两个时间的天数差 日期格式为 YYYY-MM-dd
//+---------------------------------------------------
function daysBetween(DateOne,DateTwo)
{

var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));  
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);  
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));  

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));  
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);  
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));  

var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);   
return Math.abs(cha);  

}

//+---------------------------------------------------
//| 日期计算
//+---------------------------------------------------
Date.prototype.DateAdd = function(strInterval, Number) {

var dtTmp = this;  
switch (strInterval) {   
    case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));  
    case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));  
    case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));  
    case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));  
    case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));  
    case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
    case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());  
}  

}

//+---------------------------------------------------
//| 比较日期差 dtEnd 格式为日期型或者有效日期格式字符串
//+---------------------------------------------------
Date.prototype.DateDiff = function(strInterval, dtEnd) {

var dtStart = this;  
if (typeof dtEnd == 'string' )//如果是字符串转换为日期型  
{   
    dtEnd = StringToDate(dtEnd);  
}  
switch (strInterval) {   
    case 's' :return parseInt((dtEnd - dtStart) / 1000);  
    case 'n' :return parseInt((dtEnd - dtStart) / 60000);  
    case 'h' :return parseInt((dtEnd - dtStart) / 3600000);  
    case 'd' :return parseInt((dtEnd - dtStart) / 86400000);  
    case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));  
    case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);  
    case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();  
}  

}

//+---------------------------------------------------
//| 日期输出字符串,重载了系统的toString方法
//+---------------------------------------------------
Date.prototype.toString = function(showWeek)
{

var myDate= this;  
var str = myDate.toLocaleDateString();  
if (showWeek)  
{   
    var Week = ['日','一','二','三','四','五','六'];  
    str += ' 星期' + Week[myDate.getDay()];  
}  
return str;  

}

//+---------------------------------------------------
//| 日期合法性验证
//| 格式为:YYYY-MM-DD或YYYY/MM/DD
//+---------------------------------------------------
function IsValidDate(DateStr)
{

var sDate=DateStr.replace(/(^\s+|\s+$)/g,''); //去两边空格;   
if(sDate=='') return true;   
//如果格式满足YYYY-(/)MM-(/)DD或YYYY-(/)M-(/)DD或YYYY-(/)M-(/)D或YYYY-(/)MM-(/)D就替换为''   
//数据库中,合法日期可以是:YYYY-MM/DD(2003-3/21),数据库会自动转换为YYYY-MM-DD格式   
var s = sDate.replace(/[\d]{ 4,4 }[\-/]{ 1 }[\d]{ 1,2 }[\-/]{ 1 }[\d]{ 1,2 }/g,'');   
if (s=='') //说明格式满足YYYY-MM-DD或YYYY-M-DD或YYYY-M-D或YYYY-MM-D   
{   
    var t=new Date(sDate.replace(/\-/g,'/'));   
    var ar = sDate.split(/[-/:]/);   
    if(ar[0] != t.getYear() || ar[1] != t.getMonth()+1 || ar[2] != t.getDate())   
    {   
        //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
        return false;   
    }   
}   
else   
{   
    //alert('错误的日期格式!格式为:YYYY-MM-DD或YYYY/MM/DD。注意闰年。');   
    return false;   
}   
return true;   

}

//+---------------------------------------------------
//| 日期时间检查
//| 格式为:YYYY-MM-DD HH:MM:SS
//+---------------------------------------------------
function CheckDateTime(str)
{

var reg = /^(\d+)-(\d{ 1,2 })-(\d{ 1,2 }) (\d{ 1,2 }):(\d{ 1,2 }):(\d{ 1,2 })$/;   
var r = str.match(reg);   
if(r==null)return false;   
r[2]=r[2]-1;   
var d= new Date(r[1],r[2],r[3],r[4],r[5],r[6]);   
if(d.getFullYear()!=r[1])return false;   
if(d.getMonth()!=r[2])return false;   
if(d.getDate()!=r[3])return false;   
if(d.getHours()!=r[4])return false;   
if(d.getMinutes()!=r[5])return false;   
if(d.getSeconds()!=r[6])return false;   
return true;   

}

//+---------------------------------------------------
//| 把日期分割成数组
//+---------------------------------------------------
Date.prototype.toArray = function()
{

var myDate = this;  
var myArray = Array();  
myArray[0] = myDate.getFullYear();  
myArray[1] = myDate.getMonth();  
myArray[2] = myDate.getDate();  
myArray[3] = myDate.getHours();  
myArray[4] = myDate.getMinutes();  
myArray[5] = myDate.getSeconds();  
return myArray;  

}

//+---------------------------------------------------
//| 取得日期数据信息
//| 参数 interval 表示数据类型
//| y 年 m月 d日 w星期 ww周 h时 n分 s秒
//+---------------------------------------------------
Date.prototype.DatePart = function(interval)
{

var myDate = this;  
var partStr='';  
var Week = ['日','一','二','三','四','五','六'];  
switch (interval)  
{   
    case 'y' :partStr = myDate.getFullYear();break;  
    case 'm' :partStr = myDate.getMonth()+1;break;  
    case 'd' :partStr = myDate.getDate();break;  
    case 'w' :partStr = Week[myDate.getDay()];break;  
    case 'ww' :partStr = myDate.WeekNumOfYear();break;  
    case 'h' :partStr = myDate.getHours();break;  
    case 'n' :partStr = myDate.getMinutes();break;  
    case 's' :partStr = myDate.getSeconds();break;  
}  
return partStr;  

}

//+---------------------------------------------------
//| 取得当前日期所在月的最大天数
//+---------------------------------------------------
Date.prototype.MaxDayOfDate = function()
{

var myDate = this;  
var ary = myDate.toArray();  
var date1 = (new Date(ary[0],ary[1]+1,1));  
var date2 = date1.dateAdd(1,'m',1);  
var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));  
return result;  

}

//+---------------------------------------------------
//| 取得当前日期所在周是一年中的第几周
//+---------------------------------------------------
Date.prototype.WeekNumOfYear = function()
{

var myDate = this;  
var ary = myDate.toArray();  
var year = ary[0];  
var month = ary[1]+1;  
var day = ary[2];  
document.write('< script language=VBScript\> \n');  
document.write('myDate = Datue(''+month+'-'+day+'-'+year+'') \n');  
document.write('result = DatePart('ww', myDate) \n');  
document.write(' \n');  
return result;  

}

//+---------------------------------------------------
//| 字符串转成日期类型
//| 格式 MM/dd/YYYY MM-dd-YYYY YYYY/MM/dd YYYY-MM-dd
//+---------------------------------------------------
function StringToDate(DateStr)
{

var converted = Date.parse(DateStr);  
var myDate = new Date(converted);  
if (isNaN(myDate))  
{   
    //var delimCahar = DateStr.indexOf('/')!=-1?'/':'-';  
    var arys= DateStr.split('-');  
    myDate = new Date(arys[0],--arys[1],arys[2]);  
}  
return myDate;  

}

若要显示:当前日期加时间(如:2009-06-12 12:00)

function CurentTime()

{ 
    var now = new Date();
   
    var year = now.getFullYear();       //年
    var month = now.getMonth() + 1;     //月
    var day = now.getDate();            //日
   
    var hh = now.getHours();            //时
    var mm = now.getMinutes();          //分
   
    var clock = year + "-";
   
    if(month < 10)
        clock += "0";
   
    clock += month + "-";
   
    if(day < 10)
        clock += "0";
       
    clock += day + " ";
   
    if(hh < 10)
        clock += "0";
       
    clock += hh + ":";
    if (mm < 10) clock += '0'; 
    clock += mm; 
    return(clock); 
} 
09
Jan
0

html checkbox判断选中和操作

判断是否选中
方法一:
if ($("#checkbox-id").get(0).checked) {

// do something

}

方法二:
if($('#checkbox-id').is(':checked')) {

// do something

}

方法三:
if ($('#checkbox-id').attr('checked')) {

// do something

}
几种操作
1、全选
$("#btn1").click(function(){
$("input[name='checkbox']").attr("checked","true");
})
2、取消全选(全不选)
$("#btn2").click(function(){
$("input[name='checkbox']").removeAttr("checked");
})
3、选中所有奇数
$("#btn3").click(function(){
$("input[name='checkbox']:odd").attr("checked","true");
})
4、选中所有偶数
$("#btn6").click(function(){
$("input[name='checkbox']:even").attr("checked","true");
})
5、反选
$("#btn4").click(function(){
$("input[name='checkbox']").each(function(){
if($(this).attr("checked"))
{
$(this).removeAttr("checked");
}
else
{
$(this).attr("checked","true");
}
})
})
或者
$("#invert").click(function(){
$("#ruleMessage [name='delModuleID']:checkbox").each(function(i,o){
$(o).attr("checked",!$(o).attr("checked"));
});
});
6、获取选择项的值
var aa="";
$("#btn5").click(function(){
$("input[name='checkbox']:checkbox:checked").each(function(){
aa+=$(this).val()
})
document.write(aa);
})
})
7、遍历选中项
$("inputtype=checkbox").each(function(){
//由于复选框一般选中的是多个,所以可以循环输出
alert($(this).val());
});