HTML页面输入验证

Function.registerNamespace( " net.bingosoft.web " );
net.bingosoft.web.Validators 
=   function (containers) {
 
var _containers = containers ? containers : document.body;
 
var _self = this;
 
var _errmsg = "";
 
 
if!(_containers instanceof Array) ){
  _containers 
= [_containers];
 }

 
 
this.attach = function(){
  
if(arguments.length > 0){
   _self._attach(arguments[
0]);
  }
else{
   _self._attach(_containers);
  }

 }

 
 
this._attach = function(obj){
  
if(!obj)return;
  
if(!(obj instanceof Array))obj = [obj];
  
  
for(var i=0; i<obj.length; i++){
   
var container = obj[i];
   
if(container.validator){
    container.style.backgroundColor 
= "#DDEEFF";
    _self._attachEvents(container);
   }

   
   
if(container.childNodes)
   
for(var j=0; j<container.childNodes.length; j++){
    
var child = container.childNodes[j];
    _self._attach(child);
   }

  }

 }

 
 
this._attachEvents = function(obj){
  
var validatorNames = (obj.validator.trim()).split(/s*,s*/g);
  
var len = validatorNames.length;
  
for(var i = len - 1; i >= 0; i--){
   
var validatorName = validatorNames[i].toLowerCase();
   
var valiatorTypeName = _self._upperFirstLetter(validatorName) + "Validator";
   
var namespace = typeof(obj.vnamespace) == 'undefined' ? "net.bingosoft.web" : obj.vnamespace;
   
if(namespace) valiatorTypeName = namespace + "." + valiatorTypeName;
   
   
var fn = Function.parse(valiatorTypeName);
   
if(!fn) {
    alert (
'can not find validator: ' + valiatorTypeName);
   }
else{
    
var validator = new fn(obj, validatorName);
    
var events = validator.getEvents();
    
if(events){
     
var arrEvents = events.split(/s*,s*/g);
     
for(var j=0; j<arrEvents.length; j++){
      obj.attachEvent(arrEvents[j], validator._doValidate);
     }

    }

   }

  }

 }

 
 
this._getNamespace = function(obj, validatorName){
  
var ns = validatorName + "_namespace";
  
if(obj[ns]) return obj[ns];
  
if(obj.vnamespace) return obj.vnamespace;
  
return "net.bingosoft.web";
 }

 
 
this._check = function(obj){
  
var validatorNames = (obj.validator.trim()).split(/s*,s*/g);
  
var len = validatorNames.length;
  
for(var i = len - 1; i >= 0; i--){
   
var validatorName = validatorNames[i].toLowerCase();
   
var valiatorTypeName = _self._upperFirstLetter(validatorName) + "Validator";
   
var namespace = _self._getNamespace(obj, validatorName);
   
if(namespace) valiatorTypeName = namespace + "." + valiatorTypeName;
   
   
var fn = Function.parse(valiatorTypeName);
   
if(!fn) {
    alert (
'can not find validator: ' + valiatorTypeName);
   }
else{
     
var validator = new fn(obj, validatorName);
     
if(!validator._doValidate()) return false;
   }

  }

  
return true;
 }

 
 
this._upperFirstLetter = function(inputString){
  
if(!inputString) return inputString;
  
var first = inputString.substring(0,1).toUpperCase();
  
var left = inputString.substring(1);
  
return first + left;
 }

 
 
this.validate = function(){
  
if(arguments.length > 0){
   _self._validate(arguments[
0]);
  }
else{
   
return _self._validate(_containers);
  }

 }

 
 
this._validate = function(obj){
  
if(!obj)return true;
  
if(!(obj instanceof Array))obj = [obj];
  
  
for(var i=0; i<obj.length; i++){  
   
var container = obj[i];
   
if(container.validator){
    
if(!_self._check(container)) return false;
   }

   
   
if(container.childNodes)
   
for(var j=0; j<container.childNodes.length; j++){
    
var child = container.childNodes[j];
    
if(!_self._validate(child)) return false;
   }

  }

  
return true;
 }

}

net.bingosoft.web.Validators.registerSealedClass(
" net.bingosoft.web.Validators " null null );
net.bingosoft.web.Validators._attachBodyReadyState 
=   function () {
 
if (document.readyState=="complete"
  window.$validator 
= new net.bingosoft.web.Validators();
  window.$validator.attach();
 }

}

document.attachEvent(
" onreadystatechange " , net.bingosoft.web.Validators._attachBodyReadyState);
// /
//
 {validator}_message
//
 {validator}_namespace
//
 {validator}_events
//
 vmessage
//
 vnamespace
//
 venvents
//
 vrealtime
net.bingosoft.web.Validator  =   function (element, validatorName) {
 net.bingosoft.web.Validator.initializeBase(
this);
 
 
var _element = element;
 
if(!_element) throw new Error("can not found html element!");
 
if(!validatorName) throw new Error("can not found param 'validatorName'");
 
 
if(typeof (_element.validate_next) == 'undefined'){
  _element.validate_next 
= true;
//  _element.style.backgroundColor = "blue";
 }

 
 
var _validatorName = validatorName;
 
var _bRealtime = _element.vrealtime ? true : false;
 
var _self = this;
 
 
this.validate = function(){
  alert(
'do validate');
  
return false;
 }

 
 
this._doValidate = function(){
  
//if(!element.validate_next) return true;
  var ret = _self.validate();
  
//element.validate_next = !ret;
  return ret;
 }

 
this.getValidatorName = function(){
  
return _validatorName;
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getValidatorName");
 
 
this.getMessage = function(){
  
return _element[_self.getValidatorName() + "_message"]
   
? _element[_self.getValidatorName() + "_message"]
   : _element[
"vmessage"]
    
? _element["vmessage"]
    : _self.getDefaultMessage();
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getMessage");
 
 
this.getDefaultMessage = function(){
  
return "error input";
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getDefaultMessage");
 
// this.getNamespace = function(){
//
  return _element[_self.getValidatorName() + "_namespace"]
//
   ? _element[_self.getValidatorName() + "_namespace"]
//
   : _element["vnamespace"]
//
    ? _element["vnamespace"]
//
    : _self.getDefaultNamespace();  
//
 }; net.bingosoft.web.Validator.registerBaseMethod(this, "getNamespace");
//
 
//
 this.getDefaultNamespace = function(){
//
  return "net.bingosoft.web";
//
 }; net.bingosoft.web.Validator.registerBaseMethod(this, "getDefaultNamespace");
 this.getEvents = function(){
  
return _element[_self.getValidatorName() + "_events"]
   
? _element[_self.getValidatorName() + "_events"]
   : _element[
"vevents"]
    
? _element["vevents"]
    : _self.getDefaultEvents();
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getEvents");
 
 
this.getDefaultEvents = function(){
  
var events = "onblur";
  
if(_bRealtime) events = "onblur,onkeypress,onpaste";
  
  
return events;
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getDefaultEvents");
 
 
this.isRealTime = function(){
  
return _bRealtime;
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"isRealTime");
 
 
this.getValue = function(){
  
return _element.value;
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"getValue");
 
 
this.reportError = function(){
  alert(_self.getMessage());
  
if(element.focus)element.focus();
  
if(element.select)element.select();
  
  
//element.validate_next = true;
 }
; net.bingosoft.web.Validator.registerBaseMethod(this"reportError");
 
 
//@Override
 this.toString = function(){
  
return "[Validator]";
 }

}

net.bingosoft.web.Validator.registerClass(
" net.bingosoft.web.Validator " );
net.bingosoft.web.Validator.prototype.toString 
=   function () {
 
return "validator";
}

// /
//
 validator="notempty"
net.bingosoft.web.NotemptyValidator  =   function (element) {
 net.bingosoft.web.NotemptyValidator.initializeBase(
this, [element, "notempty"]);
 
var _self = this;
 
 
//@Override
 this.validate = function(){
  
var value = net.bingosoft.web.NotemptyValidator.callBaseMethod(_self,"getValue");
  
var passed = value && value.trim();
  
if!passed ){
   net.bingosoft.web.NotemptyValidator.callBaseMethod(_self, 
"reportError");
  }

  
  
return passed;
 }

 
 
//@Override
 this.getDefaultMessage = function(){
  
return "can not be empty";
 }

 
 
//@Override
 this.getDefaultEvents = function(){
  
return "";
 }

 
 
//@Override
 this.toString = function(){
  
return "[Notempty Validator]";
 }
 
}

net.bingosoft.web.NotemptyValidator.registerClass(
" net.bingosoft.web.NotemptyValidator " , net.bingosoft.web.Validator,  null );
// /
//
 validator="reg"
//
 reg_checktime
//
 reg_realtime
net.bingosoft.web.RegValidator  =   function (element, validatorName, checktimReg, realtimeReg, defaultMsg) {
 net.bingosoft.web.RegValidator.initializeBase(
this, [element, validatorName]);
 
var _self = this;
 
var _element = element;
 
var _checktimeReg = checktimReg || _element.reg_checktime;
 
var _realtimeReg = realtimeReg || _element.reg_realtime;
 
var _defaultMsg = defaultMsg;
 
 
if(!_checktimeReg){
  alert(
"reg validator need attribute 'reg_checktime'");
 }
 
 
 
//@Override
 this.validate = function(){
  
var eventtype = window.event.type;
  
var value = net.bingosoft.web.RegValidator.callBaseMethod(_self, "getValue");
  
if(eventtype == "keypress")value += String.fromCharCode(window.event.keyCode);   
  
if(value==""return true;
  
  
var bRealtime = net.bingosoft.web.RegValidator.callBaseMethod(_self, "isRealTime");
  
if((eventtype == "keypress" || eventtype == "paste"&& bRealtime){
   _element.reg_express 
= _realtimeReg || _checktimeReg;
  }
else{
   _element.reg_express 
= _checktimeReg;
  }

  
var reg = new RegExp(_element.reg_express);
  
var passed = reg.test(value);
//  alert(passed ? "passed" : "not passed");
  if(passed) return passed;
    
  
if(eventtype == "blur"){
   net.bingosoft.web.RegValidator.callBaseMethod(_self, 
"reportError");
  }
else{
   window.event.returnValue 
= false;  
  }

  
return passed;
 }

 
 
//@Override
 this.getDefaultMessage = function(){
  
return _defaultMsg || "not match the regular";
 }

 
 
//@Override
 this.toString = function(){
  
return "[Reg Validator]";
 }

}

net.bingosoft.web.RegValidator.registerClass(
" net.bingosoft.web.RegValidator " , net.bingosoft.web.Validator,  null );
// /
//
 validator="upper"
net.bingosoft.web.UpperValidator  =   function (element) {
 net.bingosoft.web.UpperValidator.initializeBase(
this, [element, "upper"]);
 
var _self = this;
 
 
//@Override
 this.validate = function(){
  
var eventtype = window.event.type;
  
var value = net.bingosoft.web.RegValidator.callBaseMethod(_self, "getValue");
  
if(eventtype == "paste"){
   
var tempStr = window.clipboardData.getData("Text").toUpperCase();
   window.clipboardData.setData(
"Text",tempStr);
  }
else if(eventtype=="keypress"){
   
var keyCode = window.event.keyCode;
   
if (keyCode >= 97 && keyCode <= 122)
    window.event.keyCode 
= keyCode - 32;
  }

  
  
return true;
 }

 
 
//@Override
 this.getDefaultEvents = function(){
  
return "onblur,onkeypress,onpaste";
 }

}
;net.bingosoft.web.UpperValidator.registerClass( " net.bingosoft.web.UpperValidator " , net.bingosoft.web.Validator,  null );
// /
//
 validator="lower"
net.bingosoft.web.LowerValidator  =   function (element) {
 net.bingosoft.web.LowerValidator.initializeBase(
this, [element, "upper"]);
 
var _self = this;
 
 
//@Override
 this.validate = function(){
  
var eventtype = window.event.type;
  
var value = net.bingosoft.web.RegValidator.callBaseMethod(_self, "getValue");
  
if(eventtype == "paste"){
   
var tempStr = window.clipboardData.getData("Text").toLowerCase();
   window.clipboardData.setData(
"Text",tempStr);
  }
else if(eventtype=="keypress"){
   
var keyCode = window.event.keyCode;
   
if (keyCode >= 65 && keyCode <= 90)
    window.event.keyCode 
= keyCode + 32;
  }

  
  
return true;
 }

 
 
//@Override
 this.getDefaultEvents = function(){
  
return "onblur,onkeypress,onpaste";
 }

}
;net.bingosoft.web.LowerValidator.registerClass( " net.bingosoft.web.LowerValidator " , net.bingosoft.web.Validator,  null );
// /
net.bingosoft.web.NumberValidator  =   function (element) {
 net.bingosoft.web.NumberValidator.initializeBase(
this, [element, "number""^/d+$""^/d*$""you should input a number"]);
}
;net.bingosoft.web.NumberValidator.registerClass( " net.bingosoft.web.NumberValidator " , net.bingosoft.web.RegValidator,  null );
// /
net.bingosoft.web.EmailValidator  =   function (element) {
 net.bingosoft.web.EmailValidator.initializeBase(
this, [element, "email",
  
"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$",
  
"^(([/w-]+(/.[/w-]+)*@?)|([/w-]+(/.[/w-]+)*@[/w-]+)|([/w-]+(/.[/w-]+)*@([/w-]+/.)+)|([/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+))$",
  
"email format error"]);
}
;net.bingosoft.web.EmailValidator.registerClass( " net.bingosoft.web.EmailValidator " , net.bingosoft.web.RegValidator,  null );
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值