超实用的JavaScript表单代码段
整理了下比较实用的Javascript表单代码段,分享给大家供大家参考,具体内容如下
1多个window.onload方法
由于onload方法时在页面加载完成后,自动调用的。因此被广泛的使用,但是弊端是只能实用onload执行一个方法。下面代码段,可以保证多个方法在Onload时执行:
functionaddLoadEvent(func){
varoldonload=window.onload;
if(typeofwindow.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(){
returnfalse;
}
xxx.onpaste=function(){
returnfalse;
}
5限制字符串长度(区分中英文)
主要思想:
需要3个数据:1限制输入的长度;2已经输入了多长;3截取多少个字符;
由于JS里面的截取方法不区分中英文,因此
“哈哈哈”.substr(0,2)---->哈哈
“haha”.substr(0,2)--->ha
但是,如果按照编码一个汉字应该对应2个字符,一个字母对应一个字符。
因此统计真实长度时,应该是字符的长度+汉字的个数
例如我们限制输入5个字符:那么输入“哈哈”后,就只能输入一个h,不能再输入汉字了。代码参考如下,可以运行一下推敲推敲。
<scripttype="text/javascript">
varstrLen=(function(){//strlLength的功能相同,但是写法巨麻烦
returnfunction(_str,_model){
_model=_model||"Ch";//En模式下,中文算作1字符;Ch模式下,中文为2个字符
var_strLen=_str.length;//获取字符串长度
if(_strLen==0){
return0;
}else{
varchinese=_str.match(/[\u4e00-\u9fa5]/g);//匹配中文
return_strLen+(chinese&&_model=="Ch"?chinese.length:0);//为什么要&&?
}
}
})();
varstrLength=function(_str,_model){
_model=_model||"Ch";//En模式下,中文算作1字符;Ch模式下,中文为2个字符
var_strLen=_str.length;//获取字符串长度
if(_strLen==0){
return0;
}else{
varchinese=_str.match(/[\u4e00-\u9fa5]/g);//匹配中文
return_strLen+(chinese&&_model=="Ch"?chinese.length:0);//为什么要&&?
}
}
varfuncRemainingCharacters=function(){
remainingCharacters=document.getElementById("remainingCharacters");
varclearRemainingCharacters=function(_this){
var_value=_this.value;
var_valueLength=_value.length;
vardataLength=_this.getAttribute("data-length");
vardataModel=_this.getAttribute("data-model");
varsubLen=dataLength;
if(dataModel=="Ch"){//仅当开启Ch后,才对重新计算截取的长度
_valueLength=strLength(_value,dataModel);
varvv=_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>
全部代码:
<!doctypehtml>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<linkrel="stylesheet"href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<scripttype="text/javascript">
functionaddLoadEvent(func){
varoldonload=window.onload;
if(typeofwindow.onload!='function'){
window.onload=func;
}else{
window.onload=function(){
oldonload();
func();
}
}
}
</script>
</head>
<body>
<pclass="h3">(支持中英文区分)限制字符串长度</p>
<divclass="container">
<divclass="row">
<divclass="col-md-4">
<inputtype="text"class="form-control"data-length="5"id="remainingCharacters"data-model="Ch">
</div>
</div>
</div>
<scripttype="text/javascript">
varstrLen=(function(){//strlLength的功能相同,但是写法巨麻烦
returnfunction(_str,_model){
_model=_model||"Ch";//En模式下,中文算作1字符;Ch模式下,中文为2个字符
var_strLen=_str.length;//获取字符串长度
if(_strLen==0){
return0;
}else{
varchinese=_str.match(/[\u4e00-\u9fa5]/g);//匹配中文
return_strLen+(chinese&&_model=="Ch"?chinese.length:0);//为什么要&&?
}
}
})();
varstrLength=function(_str,_model){
_model=_model||"Ch";//En模式下,中文算作1字符;Ch模式下,中文为2个字符
var_strLen=_str.length;//获取字符串长度
if(_strLen==0){
return0;
}else{
varchinese=_str.match(/[\u4e00-\u9fa5]/g);//匹配中文
return_strLen+(chinese&&_model=="Ch"?chinese.length:0);//为什么要&&?
}
}
varfuncRemainingCharacters=function(){
remainingCharacters=document.getElementById("remainingCharacters");
varclearRemainingCharacters=function(_this){
var_value=_this.value;
var_valueLength=_value.length;
vardataLength=_this.getAttribute("data-length");
vardataModel=_this.getAttribute("data-model");
varsubLen=dataLength;
if(dataModel=="Ch"){//仅当开启Ch后,才对重新计算截取的长度
_valueLength=strLength(_value,dataModel);
varvv=_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函数
varsetCSS=function(_this,cssOption){
if(!_this||_this.nodeType===3||_this.nodeType===8||!_this.style){
return;
}
for(varcsincssOption){
_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代码
<labelclass="checkbox-inline">
<inputtype="checkbox"name="actionSelects">读书
</label>
<labelclass="checkbox-inline">
<inputtype="checkbox"name="actionSelects">跑步
</label>
<labelclass="checkbox-inline">
<inputtype="checkbox"name="actionSelects">游戏
</label>
<labelclass="checkbox-inline">
<inputtype="checkbox"name="actionSelects">游泳
</label>
//下面是js代码
vartargets=document.getElementsByName("actionSelects");
vartargetsLen=targets.length;
vari=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;
}
}
希望本文所述对大家学习javascript程序设计有所帮助。