时间:2021-05-28
最新更新修改了当input元件name有包含[],把焦点移到元件上时会出现JS错误,只有IE是这种情况,没找到很好的解决办法,我只是把这种情况给排除了,就是当元件name有包含[]不把焦点移上去,哪果有好的解决办法请联系我。
并作了 demo8 - 结合jquery实现ajax自定义验证
下载:formvalid.zip 复制代码 代码如下:
/*
*Copyright(c)2006-2008coderhome.net
*Allrightsreserved.
*Support:志凡(dzjzmj@163.com)
*
*Version:0.5
*/
varFormValid=function(frm){
this.frm=frm;
this.errMsg=newArray();
this.errName=newArray();
this.required=function(inputObj){
if(typeof(inputObj)=="undefined"||inputObj.value.trim()==""){
returnfalse;
}
returntrue;
}
this.eqaul=function(inputObj,formElements){
varfstObj=inputObj;
varsndObj=formElements[inputObj.getAttribute('eqaulName')];
if(fstObj!=null&&sndObj!=null){
if(fstObj.value!=sndObj.value){
returnfalse;
}
}
returntrue;
}
this.gt=function(inputObj,formElements){
varfstObj=inputObj;
varsndObj=formElements[inputObj.getAttribute('eqaulName')];
if(fstObj!=null&&sndObj!=null&&fstObj.value.trim()!=''&&sndObj.value.trim()!=''){
if(fstObj.value<=sndObj.value){
returnfalse;
}
}
returntrue;
}
this.compare=function(inputObj,formElements){
varfstObj=inputObj;
varsndObj=formElements[inputObj.getAttribute('objectName')];
if(fstObj!=null&&sndObj!=null&&fstObj.value.trim()!=''&&sndObj.value.trim()!=''){
if(!eval('fstObj.value'+inputObj.getAttribute('operate')+'sndObj.value')){
returnfalse;
}
}
returntrue;
}
this.limit=function(inputObj){
varlen=inputObj.value.length;
if(len){
varminv=inputObj.getAttribute('min');
varmaxv=inputObj.getAttribute('max');
minv=minv||0;
maxv=maxv||Number.MAX_VALUE;
returnminv<=len&&len<=maxv;
}
returntrue;
}
this.range=function(inputObj){
varval=parseInt(inputObj.value);
if(inputObj.value){
varminv=inputObj.getAttribute('min');
varmaxv=inputObj.getAttribute('max');
minv=minv||0;
maxv=maxv||Number.MAX_VALUE;
returnminv<=val&&val<=maxv;
}
returntrue;
}
this.requireChecked=function(inputObj){
varminv=inputObj.getAttribute('min');
varmaxv=inputObj.getAttribute('max');
minv=minv||1;
maxv=maxv||Number.MAX_VALUE;
varchecked=0;
vargroups=document.getElementsByName(inputObj.name);
for(vari=0;i<groups.length;i++){
if(groups[i].checked)checked++;
}
returnminv<=checked&&checked<=maxv;
}
this.filter=function(inputObj){
varvalue=inputObj.value;
varallow=inputObj.getAttribute('allow');
if(value.trim()){
returnnewRegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g,allow.split(/\s*,\s*/).join("|")),"gi").test(value);
}
returntrue;
}
this.isNo=function(inputObj){
varvalue=inputObj.value;
varnoValue=inputObj.getAttribute('noValue');
returnvalue!=noValue;
}
this.checkReg=function(inputObj,reg,msg){
inputObj.value=inputObj.value.trim();
if(inputObj.value==''){
return;
}else{
if(!reg.test(inputObj.value)){
this.addErrorMsg(inputObj.name,msg);
}
}
}
this.passed=function(){
if(this.errMsg.length>0){
FormValid.showError(this.errMsg,this.errName,this.frm.name);
if(this.errName[0].indexOf('[')==-1){
frt=document.getElementsByName(this.errName[0])[0];
if(frt.type!='radio'&&frt.type!='checkbox'){
frt.focus();
}
}
returnfalse;
}else{
returnFormValid.succeed();
}
}
this.addErrorMsg=function(name,str){
this.errMsg.push(str);
this.errName.push(name);
}
this.addAllName=function(name){
FormValid.allName.push(name);
}
}
FormValid.allName=newArray();
FormValid.showError=function(errMsg){
varmsg="";
for(i=0;i<errMsg.length;i++){
msg+="-"+errMsg[i]+"\n";
}
alert(msg);
}
FormValid.succeed=function(){
returntrue;
}
functionvalidator(frm){
varformElements=frm.elements;
varfv=newFormValid(frm);
for(vari=0;i<formElements.length;i++){
varvalidType=formElements[i].getAttribute('valid');
varerrorMsg=formElements[i].getAttribute('errmsg');
if(!errorMsg){
errorMsg='';
}
if(validType==null)continue;
fv.addAllName(formElements[i].name);
varvts=validType.split('|');
varems=errorMsg.split('|');
for(varj=0;j<vts.length;j++){
varcurValidType=vts[j];
varcurErrorMsg=ems[j];
switch(curValidType){
case'isNumber':
case'isEmail':
case'isPhone':
case'isMobile':
case'isIdCard':
case'isMoney':
case'isZip':
case'isQQ':
case'isInt':
case'isEnglish':
case'isChinese':
case'isUrl':
case'isDate':
case'isTime':
fv.checkReg(formElements[i],RegExps[curValidType],curErrorMsg);
break;
case'regexp':
fv.checkReg(formElements[i],newRegExp(formElements[i].getAttribute('regexp'),"g"),curErrorMsg);
break;
case'custom':
if(!eval(formElements[i].getAttribute('custom')+'(formElements[i],formElements)')){
fv.addErrorMsg(formElements[i].name,curErrorMsg);
}
break;
default:
if(!eval('fv.'+curValidType+'(formElements[i],formElements)')){
fv.addErrorMsg(formElements[i].name,curErrorMsg);
}
break;
}
}
}
returnfv.passed();
}
String.prototype.trim=function(){
returnthis.replace(/^\s*|\s*$/g,"");
}
varRegExps=function(){};
RegExps.isNumber=/^[-\+]?\d+(\.\d+)?$/;
RegExps.isEmail=/([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/;
RegExps.isPhone=/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
RegExps.isMobile=/^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/;
RegExps.isIdCard=/(^\d{15}$)|(^\d{17}[0-9Xx]$)/;
RegExps.isMoney=/^\d+(\.\d+)?$/;
RegExps.isZip=/^[1-9]\d{5}$/;
RegExps.isQQ=/^[1-9]\d{4,10}$/;
RegExps.isInt=/^[-\+]?\d+$/;
RegExps.isEnglish=/^[A-Za-z]+$/;
RegExps.isChinese=/^[\u0391-\uFFE5]+$/;
RegExps.isUrl=/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
RegExps.isDate=/^\d{4}-\d{1,2}-\d{1,2}$/;
RegExps.isTime=/^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/;
本地下载
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
errMsg是一个错误消息的数组,这样方便自定义,errName是对应错误信息元件名数组,这样可以非富自定义显示方式,FormValid.allName记录了所
人生壁纸1.0.5.31版本添加了一些新功能,支持微博分享;修改壁纸裁切问题;增加自定义壁纸列表加鼠标hover效果,增加自定义设置壁纸动画效果;解决运行全屏程
前言在Laravel5.6版本中日志行为可以很容易的进行自定义,而在5.5以下版本中日志行为自定义自由度并不是很高,但是项目有需求不能因为这个就强行将项目升级为
jQuery:validate添加自定义验证jQuery.validator.addMethod添加自定义的验证规则addMethod:name,method,
前段时间React的16版本发布了,采用了MIT开源许可证,新增了一些新的特性。ErrorBoundaryrender方法新增返回类型Portals支持自定义D