首页 > 语言 > JavaScript > 正文

超实用的JavaScript表单代码段

2024-05-06 15:00:44
字体:
来源:转载
供稿:网友

整理了下比较实用的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>            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选