給某個文本框添加多種校驗規則
阿新 • • 發佈:2017-09-03
div error pre pos value .get get ply body
<html> <head> <meta charset="uft-8"> </head> <body> <form action="" id="registerForm" method="post"> 請輸入用戶名:<input type="text" name="userName"/> 請輸入密碼:<input type="text" name="passWord"/> 請輸入手機號碼:<input type="text" name="phoneNumber"/> <input type="submit" value="提交"/> </form> <script> /***************策略對象*************/ var strategies = { isNotEmpty:function(value,errorMsg){ if(value === ‘‘){ return errorMsg; } }, minLength:function(value,length,errorMsg){ if(value.length<length){ return errorMsg; } }, isMobile:function(){if(!/(^1[3|5|8][0-9]{9}$)/.test(value)){ return errorMsg; } } } /***************validator類***************/ var Validator = function(){ this.cache = []; }; Validator.prototype.add = function(dom,rules){ var self = this; for(var i=0,rule;rule = rules[i++];){ (function(rule){ var strategyAry = rule.strategy.solit(‘:‘); var errorMsg = rule.errorMsg; self.cache.push(function(){ var strategy = strategyAry.shift(); strategyAry.unshift(dom.value); strategyAry.push(errorMsg); return strategies[strategy].apply(dom,strategyAry); }) })(rule); } } Validator.prototype.start = function(){ for(var i=0,validatorFunc;validatorFunc = this.cache[i++];){ var errorMsg = validatorFunc(); if(errorMsg){ return errorMsg; } } } /************客戶調用代碼***********/ var registerForm = document.getElementById(‘registerForm‘); var validatorFunc = function(){ var validator = new Validator(); validator.add(registerForm.userName,[{ strategy:‘isNotEmpty‘, errorMsg:‘用戶名不能為空‘ },{strategy:‘minLength:10‘, errorMsg:‘用戶名長度不能小於10位‘ }]); validator.add(registerForm.passWord,[{ strategy:‘minLength:6‘, errorMsg:‘用戶密碼不能小於6位‘ }]); validator.add(registerForm.phoneNumber,[{ strategy:‘isMobile‘, errorMsg:‘手機號碼格式不正確‘ }]); var errorMsg = validator.start(); return errorMsg; } registerForm.onsubmit = function(){ var errorMsg = validatorFunc(); if(errorMsg){ alert(errorMsg); return false; } } </script> </body> </html>
end: 拿走不謝
給某個文本框添加多種校驗規則