Posted in Javascript onAugust 17, 2007
最新更新修改了当input元件name有包含[],把焦点移到元件上时会出现JS错误,只有IE是这种情况,没找到很好的解决办法,我只是把这种情况给排除了,就是当元件name有包含[]不把焦点移上去,哪果有好的解决办法请联系我。
并作了 demo8 - 结合jquery实现ajax自定义验证
下载:formvalid.zip
并作了 demo8 - 结合jquery实现ajax自定义验证
下载:formvalid.zip
/* * Copyright (c) 2006-2008 coderhome.net * All rights reserved. * Support : 志凡(dzjzmj@163.com) * * Version : 0.5 */ var FormValid = function(frm) { this.frm = frm; this.errMsg = new Array(); this.errName = new Array(); this.required = function(inputObj) { if (typeof(inputObj) == "undefined" || inputObj.value.trim() == "") { return false; } return true; } this.eqaul = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null) { if (fstObj.value != sndObj.value) { return false; } } return true; } this.gt = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('eqaulName')]; if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') { if (fstObj.value <= sndObj.value) { return false; } } return true; } this.compare = function(inputObj, formElements) { var fstObj = inputObj; var sndObj = formElements[inputObj.getAttribute('objectName')]; if (fstObj != null && sndObj != null && fstObj.value.trim()!='' && sndObj.value.trim()!='') { if (!eval('fstObj.value' + inputObj.getAttribute('operate') + 'sndObj.value')) { return false; } } return true; } this.limit = function (inputObj) { var len = inputObj.value.length; if (len) { var minv = inputObj.getAttribute('min'); var maxv = inputObj.getAttribute('max'); minv = minv || 0; maxv = maxv || Number.MAX_VALUE; return minv <= len && len <= maxv; } return true; } this.range = function (inputObj) { var val = parseInt(inputObj.value); if (inputObj.value) { var minv = inputObj.getAttribute('min'); var maxv = inputObj.getAttribute('max'); minv = minv || 0; maxv = maxv || Number.MAX_VALUE; return minv <= val && val <= maxv; } return true; } this.requireChecked = function (inputObj) { var minv = inputObj.getAttribute('min'); var maxv = inputObj.getAttribute('max'); minv = minv || 1; maxv = maxv || Number.MAX_VALUE; var checked = 0; var groups = document.getElementsByName(inputObj.name); for(var i=0;i<groups.length;i++) { if(groups[i].checked) checked++; } return minv <= checked && checked <= maxv; } this.filter = function (inputObj) { var value = inputObj.value; var allow = inputObj.getAttribute('allow'); if (value.trim()) { return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, allow.split(/\s*,\s*/).join("|")), "gi").test(value); } return true; } this.isNo = function (inputObj) { var value = inputObj.value; var noValue = inputObj.getAttribute('noValue'); return value!=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(); } } return false; } else { return FormValid.succeed(); } } this.addErrorMsg = function(name,str) { this.errMsg.push(str); this.errName.push(name); } this.addAllName = function(name) { FormValid.allName.push(name); } } FormValid.allName = new Array(); FormValid.showError = function(errMsg) { var msg = ""; for (i = 0; i < errMsg.length; i++) { msg += "- " + errMsg[i] + "\n"; } alert(msg); } FormValid.succeed = function () { return true; } function validator(frm) { var formElements = frm.elements; var fv = new FormValid(frm); for (var i=0; i<formElements.length;i++) { var validType = formElements[i].getAttribute('valid'); var errorMsg = formElements[i].getAttribute('errmsg'); if (!errorMsg) { errorMsg = ''; } if (validType==null) continue; fv.addAllName(formElements[i].name); var vts = validType.split('|'); var ems = errorMsg.split('|'); for (var j=0; j<vts.length; j++) { var curValidType = vts[j]; var curErrorMsg = 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],new RegExp(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; } } } return fv.passed(); } String.prototype.trim = function() { return this.replace(/^\s*|\s*$/g, ""); } var RegExps = 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}$/;
本地下载
FormValid0.5版本发布,带ajax自定义验证例子
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@