实用的JS代码段(表单篇)

整理了下比较实用的Javascript代码段,完整的代码参考

1 多个window.onload方法

  由于onload方法时在页面加载完成后,自动调用的。因此被广泛的使用,但是弊端是只能实用onload执行一个方法。下面代码段,可以保证多个方法在Onload时执行:

    function addLoadEvent(func){
        var oldonload = window.onload;
        if(typeof window.onload != 'function'){
            window.onload = func;
        }else{
            window.onload = function(){
                oldonload();
                func();
            }
        }
    }

2 正则表达式去空格

str.replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g,"");

3 利用正则过滤中文

str.replace(/[\u4e00-\u9fa5]/g,"");

4 禁止用户的拷贝和复制

xxx.oncopy = function(){
    return false;
}
xxx.onpaste = function(){
    return false;
}

5 限制字符串长度(区分中英文)

  主要思想:

  需要3个数据:1 限制输入的长度;2 已经输入了多长; 3 截取多少个字符;

  由于JS里面的截取方法不区分中英文 ,因此

  “哈哈哈”.substr(0,2) ----> 哈哈

  “haha”.substr(0,2) ---> ha

  但是,如果按照编码一个汉字应该对应2个字符,一个字母对应一个字符。

  因此统计 真实长度 时,应该是 字符的长度 + 汉字的个数 

  例如我们限制输入5个字符:那么输入“哈哈”后,就只能输入一个h,不能再输入汉字了。代码参考如下,可以运行一下推敲推敲。 

    <script type="text/javascript">
        var strLen = (function(){//strlLength的功能相同,但是写法巨麻烦
            return function(_str,_model){
                _model = _model || "Ch"; //En模式下,中文算作1字符;Ch模式下,中文为2个字符
                var _strLen = _str.length; //获取字符串长度
                if(_strLen == 0){
                    return 0;
                }else{
                    var chinese = _str.match(/[\u4e00-\u9fa5]/g); //匹配中文
                    return _strLen + (chinese && _model == "Ch"?chinese.length:0); //为什么要&&?
                }
            }
        })();
        var strLength = function(_str,_model){
            _model = _model || "Ch"; //En模式下,中文算作1字符;Ch模式下,中文为2个字符
            var _strLen = _str.length; //获取字符串长度
            if(_strLen == 0){
                return 0;
            }else{
                var chinese = _str.match(/[\u4e00-\u9fa5]/g); //匹配中文
                return _strLen + (chinese && _model == "Ch"?chinese.length:0); //为什么要&&?
            }
        }
        var funcRemainingCharacters = function(){
            remainingCharacters = document.getElementById("remainingCharacters");
            var clearRemainingCharacters = function(_this){
                var _value = _this.value;
                var _valueLength = _value.length;
                var dataLength = _this.getAttribute("data-length");
                var dataModel = _this.getAttribute("data-model");
                var subLen = dataLength;
                if(dataModel == "Ch"){//仅当开启Ch后,才对重新计算截取的长度
                    _valueLength = strLength(_value,dataModel);
                    var vv = _value.match(/[\u4e00-\u9fa5]/g); //当输入【哈哈】时,vv是["哈","哈"]数组
                    subLen = dataLength - (!vv?0:vv.length);
                }
                //_valueLength代表总共的字符长度,比如哈哈哈 为 6
                //dataLength是我们定义的限制长度,比如 5
                //subLen是计算的截取长度,当输入家具啊
                if(_valueLength > dataLength){
                    _this.value = _value.substr(0,subLen);
                }
            }
            remainingCharacters.onfocus = function(){
                clearRemainingCharacters(this);
            }
            remainingCharacters.onkeyup = function(){
                clearRemainingCharacters(this);
            }
            remainingCharacters.onblur = function(){
                clearRemainingCharacters(this);
            }
        }
        addLoadEvent(funcRemainingCharacters);
    </script>

  全部代码

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
    <script type="text/javascript">
        function addLoadEvent(func){
                var oldonload = window.onload;
                if(typeof window.onload != 'function'){
                    window.onload = func;
                }else{
                    window.onload = function(){
                        oldonload();
                        func();
                    }
                }
            }
    </script>
</head>
<body>
    <p class="h3">(支持中英文区分)限制字符串长度</p>
    <div class="container">
    <div class="row">
        <div class="col-md-4">
            <input type="text" class="form-control" data-length="5" id="remainingCharacters" data-model="Ch">
        </div>
    </div>
    </div>

    <script type="text/javascript">
        var strLen = (function(){//strlLength的功能相同,但是写法巨麻烦
            return function(_str,_model){
                _model = _model || "Ch"; //En模式下,中文算作1字符;Ch模式下,中文为2个字符
                var _strLen = _str.length; //获取字符串长度
                if(_strLen == 0){
                    return 0;
                }else{
                    var chinese = _str.match(/[\u4e00-\u9fa5]/g); //匹配中文
                    return _strLen + (chinese && _model == "Ch"?chinese.length:0); //为什么要&&?
                }
            }
        })();
        var strLength = function(_str,_model){
            _model = _model || "Ch"; //En模式下,中文算作1字符;Ch模式下,中文为2个字符
            var _strLen = _str.length; //获取字符串长度
            if(_strLen == 0){
                return 0;
            }else{
                var chinese = _str.match(/[\u4e00-\u9fa5]/g); //匹配中文
                return _strLen + (chinese && _model == "Ch"?chinese.length:0); //为什么要&&?
            }
        }
        var funcRemainingCharacters = function(){
            remainingCharacters = document.getElementById("remainingCharacters");
            var clearRemainingCharacters = function(_this){
                var _value = _this.value;
                var _valueLength = _value.length;
                var dataLength = _this.getAttribute("data-length");
                var dataModel = _this.getAttribute("data-model");
                var subLen = dataLength;
                if(dataModel == "Ch"){//仅当开启Ch后,才对重新计算截取的长度
                    _valueLength = strLength(_value,dataModel);
                    var vv = _value.match(/[\u4e00-\u9fa5]/g); //当输入【哈哈】时,vv是["哈","哈"]数组
                    subLen = dataLength - (!vv?0:vv.length);
                }
                //_valueLength代表总共的字符长度,比如哈哈哈 为 6
                //dataLength是我们定义的限制长度,比如 5
                //subLen是计算的截取长度,当输入家具啊
                if(_valueLength > dataLength){
                    _this.value = _value.substr(0,subLen);
                }
            }
            remainingCharacters.onfocus = function(){
                clearRemainingCharacters(this);
            }
            remainingCharacters.onkeyup = function(){
                clearRemainingCharacters(this);
            }
            remainingCharacters.onblur = function(){
                clearRemainingCharacters(this);
            }
        }
        addLoadEvent(funcRemainingCharacters);
    </script>
    <hr>
    <!-- **************************************************************************** -->
</script>
</body>
</html>

6 添加CSS函数

var setCSS = function(_this,cssOption){
    if(!_this || _this.nodeType === 3 || _this.nodeType === 8 || !_this.style){
        return;
    }
    for(var cs in cssOption){
        _this.style[cs] = cssOption[cs];
    }
    return _this;
};

  使用时

setCSS(xxx,{
    "position":"relative",
    "top":"0px"
});

7 自适应文本框

  采用scrollHeight复制给style.height

xxx.style.overflowY = "hidden";
xxx.onkeyup = function(){
    xxx.style.height = xxx.scrollHeight+"px";
};

8 复选框全选、取消和反选

//下面html代码
<label class="checkbox-inline">
    <input type="checkbox" name="actionSelects">读书
</label>
<label class="checkbox-inline">
    <input type="checkbox" name="actionSelects">跑步
</label>
<label class="checkbox-inline">
    <input type="checkbox" name="actionSelects">游戏
</label>
<label class="checkbox-inline">
    <input type="checkbox" name="actionSelects">游泳
</label>
//下面是js代码
var targets = document.getElementsByName("actionSelects");
var targetsLen = targets.length;
var i = 0;
document.getElementById("allSelect").onclick = function(){
    for(i=0;i<targetsLen;i++){
        targets[i].checked = true;
    }
}             document.getElementById("cancelAllSelect").onclick = function(){
    for(i=0;i<targetsLen;i++){
        targets[i].checked = false;
    }
}
document.getElementById("_select").onclick = function(){
    for(i=0;i<targetsLen;i++){
        targets[i].checked = !targets[i].checked;
    }
}

参考

【1】《超实用的JavaScript代码段》

本文转自博客园xingoo的博客,原文链接:实用的JS代码段(表单篇),如需转载请自行联系原博主。

时间: 2024-10-26 04:13:49

实用的JS代码段(表单篇)的相关文章

调试js时如何快速定位js代码段?

问题描述 调试js时如何快速定位js代码段? 如题,我在调试js的时候,不知道触发某个时间的js代码段在哪里.请问有什么办法很快就可以定位到吗? 解决方案 ctrl+f是查找快捷键 解决方案二: 使用猜测法,猜测大概用用到什么代码,进行搜索 将断点断在最开头,然后一步一步往下走,总能找到你触发代码的位置 解决方案三: 控制台断点后有一个递归栈的显示 会显示上层的调用语句位置 如果你是jquery 那么不要用压缩版本的

经典的js 代码段

0. 如何创建嵌套的过滤器: 1 2 3 4 5 //允许你减少集合中的匹配元素的过滤器, //只剩下那些与给定的选择器匹配的部分.在这种情况下, //查询删除了任何没(:not)有(:has) //包含class为"selected"(.selected)的子节点. .filter(":not(:has(.selected))") 1. 如何重用元素搜索 1 2 3 4 5 6 7 8 9 10 var allItems = $("div.item&qu

关于文本限制字数的js代码_表单特效

做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到:主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题:只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /*  value: 值:  byteLength:数据库字节长度  title:字段中文名称  attribute:属性名称  使用方法说明: 添加 (1) onkeyup="limitLength(t

限制文本字节数js代码_表单特效

做项目时自己写一段js给大家.关于文本限制字数的问题,在实际开发中经常用到:主要问题出现在对中文的限制,下面代码就解决关于限制字节数的校验问题:只要将此下代码保存到一个js文件中并引入到校验的页面中,便可使用!同时希望大家给与大力支持和宝贵意见,本人会在今后闲余之际,发表更多的好文章,谢谢!! /*  value: 值:  byteLength:数据库字节长度  title:字段中文名称  attribute:属性名称  使用方法说明: 添加 (1) onkeyup="limitLength(t

得到文本框选中的文字,动态插入文字的js代码_表单特效

复制代码 代码如下: <script language="javascript" src="js/settags.js"></script>  function AppTag(tagcode)  {   document.PostMessage.Message.value += tagcode;  }  function InsertTag(tagbegin,tagend)  {   if ((document.selection)&

刷新时清空文本框内容的js代码_表单特效

在做注册页面(.htm静态格式)时, 我想在刷新时(如F5,而不是提交表单后的返回)把开始输入文本框的内容清空 要怎么做呢? 只有密码框可以,其它的框默认保留了开始输入的信息 复制代码 代码如下: <body onload="document.forms[0].reset()">

让按钮失效5秒的js代码_表单特效

先给出一个不错的代码: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 第二种也不错 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 第三种比较精简了 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 关键在于,setTimeout第一个参数中的this是window,因此需要一个更实际的变量直接依赖setTimeout中的this是不可行的,因为其指向window,可通过全局化想被处理的节点来实现. 枫岩的方法是在setTimeout执行倒数计时之前传入正确的

获取 textarea 标签第n行的文字的js代码_表单特效

1. 欢迎大家 2.最近增加了不少的服务器,提供更好的速度 3.网速实在太慢了 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 核心代码: 复制代码 代码如下: <script type="text/javascript"> str=document.getElementById("textareaobj").value;//获取文本域内容 if(document.all){ // 如果是IE,怎么判断浏览器类型,自己找代码 arr=str.

将text的中的值,增加到textarea的js代码_表单特效

效果如图所示: 网址: 名称: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 关于后台的处理代码,可以参考下面的相关文章.