js/jquery 实现点击图片更换头像(图片)实例

1548年前javaScript10656

  

  总之一句话, 可以先将 file类型 的input 隐藏 起来,通过 图片(头像)的onclick事件 来触发 file 的onclick事件。

1.引入外部js:

         <script src="${base}/resource/front/js/jquery.js" language="javascript" type="text/javascript" ></script>

2.html页面:

      <div id="div1"><img src="${photo!}" id="avatar" tapmode onclick="getPicture()"  style="cursor: hand"/></div>
     <input type="file" name="user.photo" onchange="setImage(this,div1,avatar);" id="photo" style="display: none"/>


3.JS部分:

<script type="text/javascript">

 function getPicture(){
    $("#photo").click();
    }

function setImage(docObj, localImagId, imgObjPreview) {
    var f = $(docObj).val();
    f = f.toLowerCase();
    var strRegex = ".bmp|jpg|jpeg$";
    var re=new RegExp(strRegex);
    if (re.test(f.toLowerCase())){
         //return true;
    }
    else{
        alert("请选择正确格式的图片");
         file = $("#photo");
         file.after(file.clone());
         file.remove();
        return false;
    }
    if (docObj.files && docObj.files[0]) {
        //火狐下,直接设img属性
        //imgObjPreview.style.display = 'block';
        //imgObjPreview.style.width = '140px';
        //imgObjPreview.style.height = '187px';
        //火狐7以上版本不能用上面的getAsDataURL()方式获取,需要一下方式  
        imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);

    } else {
        //IE下,使用滤镜
        docObj.select();
        var imgSrc = document.selection.createRange().text;
        //必须设置初始大小
        //localImagId.style.width = "140px";
        //localImagId.style.height = "187px";
        //图片异常的捕捉,防止用户修改后缀来伪造图片
        try {
            localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
            localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
        } catch(e) {
            alert("您上传的图片格式不正确,请重新选择!");
            return false;
        }
        imgObjPreview.style.display = 'none';
        document.selection.empty();
    }
    return true;
}

</script>

相关文章

太阳的后裔 经典对白(羞羞哒)

太阳的后裔 经典对白(羞羞哒)

关于电视剧 ,小编常说早就戒了,但是好剧呢还是要追滴。太阳的后裔, 追剧追到12集了,开始都是宋仲基比较调皮:我很想问你一件事情。什么都不要问,你知道我要问什么。看你现在一脸都是很想嘲笑我的表情。哪有...

bootsraps treeview选中子节点自动选中父节点及反选

bootsraps treeview选中子节点自动选中父节点及反选

效果图:引入外部JS及CSS文件:<link href="${root!}/resource/css/bootstrap.min.css" rel="stylesh...

java实现将“yyyy-MM-dd”格式字符串转化成“yyyy年MM月dd日”格式

可写入工具类,直接调用即可:public static String getChinaDate(String str) {        try { ...

js根据身份证号获取省市区县

js根据身份证号获取省市区县

直接附代码:首先引用id_card_area.js,可点击id_card_area.js 下载 ,提取码: 3ugi/** * js调用 */function aa(){...

ruoyi-cloud本地idea运行

ruoyi-cloud本地idea运行

sql,代码准备连接http://doc.ruoyi.vip/ruoyi-cloud/document/hjbs.html#%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C然后...

JS实现点击图片直接打开QQ对话框

这是使用了腾讯的web接口。 <a href="tencent://message/?uin=你的QQ号&Site=QQ交谈&Menu=yes" tar...

评论列表

阍者
2020-03-26 09:56:08

请问这个setImage(this,div1,avatar)中的this指的是什么呢

萨瓦迪卡 回复:
this指的是当前的input元素对象
2020-03-26 16:34:36
admin
2021-05-20 11:02:27

请问那个docObj是什么东西..还有那个docObj.files

萨瓦迪卡 回复:
docObj指的是files类型的input对象,docObj.files指的是上传的图片文件。您可以在html中查看到调用setImage()方法的input
2021-05-26 14:38:28

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。