jquery获取input的值_jQuery获取intput file图片的宽高

更新时间:2020-10-22    来源:jquery    手机版     字体:

【www.bbyears.com--jquery】

如何判断input file表单里上传的图片的宽高呢?这个时候图片还没真正上传,也不是在页面上展示,不能使用$(“id”).width()这种方式。

在Stack Overflow找到一个方法:


var _URL = window.URL || window.webkitURL;
$("#file").change(function (e) {
    var file, img;
    if ((file = this.files[0])) {
        img = new Image();
        img.onload = function () {
            alert(this.width + " " + this.height);
        };
        img.src = _URL.createObjectURL(file);
    }
});

发现可以用,仅在火狐中测试了,其他浏览器兼容性未知,因为后台使用,所以暂且不管兼容性,拿来封装了一下。

这里封装了一个获取input file图片的宽高的函数,如下:


//获取input图片宽高
function getImageWidthAndHeight(id, callback) {
    var _URL = window.URL || window.webkitURL;
    $("#" + id).change(function (e) {
        var file, img;
        if ((file = this.files[0])) {
            img = new Image();
            img.onload = function () {
                callback && callback({"width": this.width, "height": this.height});
            };
            img.src = _URL.createObjectURL(file);
        }
    });
}
这里使用了一个回调方法。

在jQuery中使用:


(function () {
   getImageWidthAndHeight("image_file", function (obj) {
     if (obj.width != 843 || obj.height != 1038) {
        $.messager.alert("操作提示", result.data.msg, "弹窗图片宽高必须是843*1038px");
     }
   });
})(jQuery)

这样就OK了。

例子,

部分html代码


   

   
           

           
           
           
                         
           
   


jq代码


$(function(){
        var imgurl=[];
        function createfile(){
        $("#updiv").append("");
        }
        function showimg(url){
            var img="";
            $("#imglist").append(img);
        }
        function addfile(){
            showimg($(this).val());
            $(this).hide();
            createfile();
            $(".upfile").bind("change",addfile);
        }
        $(".upfile").bind("change",addfile);
    })

js简陋的获取图片方式

// 图片地址 后面加时间戳是为了避免缓存
var img_url = "http://www.qttc.net/static/upload/2013/13643608813441.jpg?"+Date.parse(new Date());
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 打印
alert("width:"+img.width+",height:"+img.height);

返回为0,0

例子,onload后在打印

// 图片地址 后面加时间戳是为了避免缓存
var img_url = "/upload/2013/13643608813441.jpg?"+Date.parse(new Date());
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 加载完成执行
img.onload = function(){
    // 打印
    alert("width:"+img.width+",height:"+img.height);
};

返回有参数


通过complete与onload一起混合使用

为了测试缓存效果,注意以下测试图片的url都不加时间戳

// 图片地址
var img_url = "static/upload/2013/13643608813441.jpg";
 
// 创建对象
var img = new Image();
 
// 改变图片的src
img.src = img_url;
 
// 判断是否有缓存
if(img.complete){
    // 打印
    alert("from:complete : width:"+img.width+",height:"+img.height);
}else{
    // 加载完成执行
    img.onload = function(){
        // 打印
        alert("from:onload : width:"+img.width+",height:"+img.height);
    };
}

本文来源:http://www.bbyears.com/wangyezhizuo/106196.html

热门标签

更多>>

本类排行