zl程序教程

您现在的位置是:首页 >  后端

当前栏目

小知识随手记:验证文件名、hover用法、雪碧图,获取上传图片尺寸大小、getComputedStyle与currentStyle获取样式(style/class)

上传 获取 用法 知识 验证 大小 样式 Class
2023-09-11 14:19:56 时间

1、验证文件名:(亲测有效)

var reg = /^(?!\.)[^\\\/:\*\?"<>\|]{1,255}$/;
var str = 'gggggggggggkkkk';
reg.test(str);

微软文件名命名规则:(1)不允许添加:\ / " ? < > * | 等9个字符;(2)不超过255字符。

//验证文件名是否合法
function validateFileName(val){
    var reg = /^(?!\.)[^\\\/:\*\?"<>\|]{1,255}$/;
    if(!reg.test(val)){
        return false;
    }
    return true;
}

给数据网格加事件委托:

$("#shareFtable").on("blur",".editable",function(){
        var id = $(this).attr("rowid");
        var text=$(this).val();
        if(text != "" && !validateFileName(text)){
            dialogMsg("文件名不合法,请重新输入!",0);
            $("#shareFtable").jqGrid("delRowData",id);
        }
        var vals = $("#shareFtable").jqGrid("getRowData");
        if (vals != '') {
            for (var i = 0; i < vals.length; i++) {
                if (vals[i].allowCode.toLowerCase() == text.toLowerCase()) {
                    dialogMsg("请输入不同的信任共享名!",0);
                    $("#shareFtable").jqGrid("delRowData",id);
                }
            }
        }
        
        if($.isNullOrEmpty(text)){
            $("#shareFtable").jqGrid("delRowData",id);
        }else{
            $("#shareFtable").jqGrid("saveRow",id);
            setsharedNameDb();
        }
    });

2、关于":hover " 定义和用法:

:hover 选择器用于选择鼠标指针浮动在上面的元素。

提示::hover 选择器可用于所有元素,不只是链接。

提示::link 选择器设置指向未被访问页面的链接的样式,:visited 选择器用于设置指向已被访问的页面的链接,:active 选择器用于活动链接。

注释:在 CSS 定义中,:hover 必须位于 :link 和 :visited 之后(如果存在的话),这样样式才能生效

.input-group-addon:hover{
    cursor:pointer;
}
//作用于span元素

3、jQuery的toggle()方法使用:toggle()里面2个函数

$("#ulParent > li > .divParent").find("img").remove();//删除div下的img元素
$("#ulParent > li > .divParent").append('<i class="fa fa-angle-double-up" aria-hidden="true" style="float: right;line-height: 44px;margin-right: 15px;"></i>');
//给div追加字体图标i标签 //toggle()方法:2个函数,点击互换字体图标 $("#ulParent > li > .divParent").toggle(function(){ $(this).find("i").removeClass("fa-angle-double-up"); $(this).find("i").addClass("fa-angle-double-down"); },function(){ $(this).find("i").removeClass("fa-angle-double-down"); $(this).find("i").addClass("fa-angle-double-up"); });

4、attr()与removeAttr():

一、attr():返回值string

.attr(name|properties|key,value|fn)

1>、获取元素的属性:

$("img").attr("src");

2>、设置元素属性:

$("img").attr("src","test.jpg");   //单一
$("img").attr({src:"test.jpg",alt:"abc"});//多个

3>、可为函数:

$("img").attr("title", function() { return this.src });

二、removeAttr(name):返回值jQuery

$("img").removeAttr("src");//删除一个属性
$("img").removeAttr("src alt");//删除多个属性
$("img").attr({src:"",alt:""});

5、用坐标定位背景图标:下面是所有图标放进去的大图

    .skin-green .computerStyle{
        background:url(${basePath}/images/public/icon_skin1.png) no-repeat 0px -40px;
    }
    .skin-red .computerStyle{
        background:url(${basePath}/images/public/icon_skin1.png) no-repeat 0px -120px;
    }
    .skin-purple .computerStyle{
        background:url(${basePath}/images/public/icon_skin1.png) no-repeat 0px -80px;
    }
    .skin-blue .computerStyle{
        background:url(${basePath}/images/public/icon_skin1.png) no-repeat 0px 0px;
    }
    .skin-yellow .computerStyle{
        background:url(${basePath}/images/public/icon_skin1.png) no-repeat 0px -160px;
    }

根据红色坐标去定位大图里的小图标

6、table布局相关

<td colspan="3"> </td>

colspan:列合并,后面是是合并的数量

rowspan:行合并,后面是是合并的数量

border-collapse:collapse;为表格设置合并边框模型

7、getComputedStyle与currentStyle获取样式(style/class)

  大家都知道,用document.getElementById(‘element').style.xxx可以获取元素的样式信息,可是它获取的只是DOM元素style属性里的样式规则,对于通过class属性引用的外部样式表,就拿不到我们要的信息了。

  DOM标准里有个全局方法getComputedStyle,可以获取到当前对象样式规则信息,如:getComputedStyle(obj,null).paddingLeft,就能获取到对象的左内边距。但是事情还没完,万恶的IE不支持此方法,它有自己的一个实现方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作为DOM元素属性存在的,如:obj.currentStyle.paddingLeft,在IE中就获取到对象的左内边距了,兼容性的写法如下:

return window.getComputedStyle 
  ? window.getComputedStyle(obj,null).paddingLeft
  : obj.currentStyle.paddingLeft;

  这样,就能在IE及FF中返回对象的当前样式信息了。
  特别注意一点:如果要获取当前对象的颜色信息,IE返回的是16进制的'#ffffff',而FF返回的是rgb(255,255,255)

  用js的style属性可以获得html标签的样式,但是不能获取非行间样式。那么怎么用js获取css的非行间样式呢?在IE下可以用currentStyle,而在火狐下面我们需要用到getComputedStyle。下面是一个小示例:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js用currentStyle和getComputedStyle获取css样式</title>
<style type="text/css">
#div1{width:100px; height:100px; background:red;}
</style>
<script type="text/javascript">
function getStyle(obj, attr){
  if(obj.currentStyle){
    return obj.currentStyle[attr];
  }else{
    return getComputedStyle(obj,false)[attr];
  }
}
window.onload=function(){
  var oDiv=document.getElementById('div1');
  alert(getStyle(oDiv,'width'))
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html> 

  这样就可以获取到样式里的width值了。

8、js获取上传图片的尺寸

  当上传图片时,有时候需要控制下上传图片的尺寸大小,需要给个提示

//获取图片的尺寸,控制尺寸大小
var reader = new FileReader(), 
    img = new Image();
// 选择的文件对象
var file = null;
$('#jjfxSoft_iconPath,#jjfxSoft_screenshotPath,#jjfxSoft_recommendPath').on('change', function (event) {
    file = event.target.files[0];
    var excuteId = this.id;
    // 选择的文件是图片
    if (file.type.indexOf("image") == 0) {
        reader.readAsDataURL(file);
    }
    // 文件base64化,以便获知图片原始尺寸
    reader.onload = function(e) {
        img.src = e.target.result;
        
        // base64地址图片加载完毕后
        img.onload = function(){
            // 图片原始尺寸
            var originWidth = this.width;
            var originHeight = this.height;
            // 最大尺寸限制
            var maxWidth = 400, maxHeight = 400;
            // 图片尺寸超过400x400的限制
            if (originWidth > maxWidth || originHeight > maxHeight) {
                dialogMsg("图片过大,请选择400*400以下的图片",0);
                $("#"+excuteId).val("");
                return false;
            }
        };
    };
})