root / trunk / web / dojo / dojox / validate / check.js @ 10
History | View | Annotate | Download (4.93 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
| 3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
| 4 | see: http://dojotoolkit.org/license for details
|
||
| 5 | */
|
||
| 6 | |||
| 7 | |||
| 8 | if(!dojo._hasResource["dojox.validate.check"]){ |
||
| 9 | dojo._hasResource["dojox.validate.check"]=true; |
||
| 10 | dojo.provide("dojox.validate.check");
|
||
| 11 | dojo.experimental; |
||
| 12 | dojo.require("dojox.validate._base");
|
||
| 13 | dojox.validate.check=function(_1,_2){ |
||
| 14 | var _3=[];
|
||
| 15 | var _4=[];
|
||
| 16 | var _5={isSuccessful:function(){ |
||
| 17 | return (!this.hasInvalid()&&!this.hasMissing()); |
||
| 18 | },hasMissing:function(){ |
||
| 19 | return (_3.length>0); |
||
| 20 | },getMissing:function(){ |
||
| 21 | return _3;
|
||
| 22 | },isMissing:function(_6){ |
||
| 23 | for(var i=0;i<_3.length;i++){ |
||
| 24 | if(_6==_3[i]){
|
||
| 25 | return true; |
||
| 26 | } |
||
| 27 | } |
||
| 28 | return false; |
||
| 29 | },hasInvalid:function(){ |
||
| 30 | return (_4.length>0); |
||
| 31 | },getInvalid:function(){ |
||
| 32 | return _4;
|
||
| 33 | },isInvalid:function(_7){ |
||
| 34 | for(var i=0;i<_4.length;i++){ |
||
| 35 | if(_7==_4[i]){
|
||
| 36 | return true; |
||
| 37 | } |
||
| 38 | } |
||
| 39 | return false; |
||
| 40 | }}; |
||
| 41 | var _8=function(_9,_a){ |
||
| 42 | return (typeof _a[_9]=="undefined"); |
||
| 43 | }; |
||
| 44 | if(_2.trim instanceof Array){ |
||
| 45 | for(var i=0;i<_2.trim.length;i++){ |
||
| 46 | var _b=_1[_2.trim[i]];
|
||
| 47 | if(_8("type",_b)||_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 48 | continue;
|
||
| 49 | } |
||
| 50 | _b.value=_b.value.replace(/(^\s*|\s*$)/g,""); |
||
| 51 | } |
||
| 52 | } |
||
| 53 | if(_2.uppercase instanceof Array){ |
||
| 54 | for(var i=0;i<_2.uppercase.length;i++){ |
||
| 55 | var _b=_1[_2.uppercase[i]];
|
||
| 56 | if(_8("type",_b)||_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 57 | continue;
|
||
| 58 | } |
||
| 59 | _b.value=_b.value.toUpperCase(); |
||
| 60 | } |
||
| 61 | } |
||
| 62 | if(_2.lowercase instanceof Array){ |
||
| 63 | for(var i=0;i<_2.lowercase.length;i++){ |
||
| 64 | var _b=_1[_2.lowercase[i]];
|
||
| 65 | if(_8("type",_b)||_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 66 | continue;
|
||
| 67 | } |
||
| 68 | _b.value=_b.value.toLowerCase(); |
||
| 69 | } |
||
| 70 | } |
||
| 71 | if(_2.ucfirst instanceof Array){ |
||
| 72 | for(var i=0;i<_2.ucfirst.length;i++){ |
||
| 73 | var _b=_1[_2.ucfirst[i]];
|
||
| 74 | if(_8("type",_b)||_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 75 | continue;
|
||
| 76 | } |
||
| 77 | _b.value=_b.value.replace(/\b\w+\b/g,function(_c){ |
||
| 78 | return _c.substring(0,1).toUpperCase()+_c.substring(1).toLowerCase(); |
||
| 79 | }); |
||
| 80 | } |
||
| 81 | } |
||
| 82 | if(_2.digit instanceof Array){ |
||
| 83 | for(var i=0;i<_2.digit.length;i++){ |
||
| 84 | var _b=_1[_2.digit[i]];
|
||
| 85 | if(_8("type",_b)||_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 86 | continue;
|
||
| 87 | } |
||
| 88 | _b.value=_b.value.replace(/\D/g,""); |
||
| 89 | } |
||
| 90 | } |
||
| 91 | if(_2.required instanceof Array){ |
||
| 92 | for(var i=0;i<_2.required.length;i++){ |
||
| 93 | if(!dojo.isString(_2.required[i])){
|
||
| 94 | continue;
|
||
| 95 | } |
||
| 96 | var _b=_1[_2.required[i]];
|
||
| 97 | if(!_8("type",_b)&&(_b.type=="text"||_b.type=="textarea"||_b.type=="password"||_b.type=="file")&&/^\s*$/.test(_b.value)){ |
||
| 98 | _3[_3.length]=_b.name; |
||
| 99 | }else{
|
||
| 100 | if(!_8("type",_b)&&(_b.type=="select-one"||_b.type=="select-multiple")&&(_b.selectedIndex==-1||/^\s*$/.test(_b.options[_b.selectedIndex].value))){ |
||
| 101 | _3[_3.length]=_b.name; |
||
| 102 | }else{
|
||
| 103 | if(_b instanceof Array){ |
||
| 104 | var _d=false; |
||
| 105 | for(var j=0;j<_b.length;j++){ |
||
| 106 | if(_b[j].checked){
|
||
| 107 | _d=true;
|
||
| 108 | } |
||
| 109 | } |
||
| 110 | if(!_d){
|
||
| 111 | _3[_3.length]=_b[0].name;
|
||
| 112 | } |
||
| 113 | } |
||
| 114 | } |
||
| 115 | } |
||
| 116 | } |
||
| 117 | } |
||
| 118 | if(_2.required instanceof Array){ |
||
| 119 | for(var i=0;i<_2.required.length;i++){ |
||
| 120 | if(!dojo.isObject(_2.required[i])){
|
||
| 121 | continue;
|
||
| 122 | } |
||
| 123 | var _b,_e;
|
||
| 124 | for(var _f in _2.required[i]){ |
||
| 125 | _b=_1[_f]; |
||
| 126 | _e=_2.required[i][_f]; |
||
| 127 | } |
||
| 128 | if(_b instanceof Array){ |
||
| 129 | var _d=0; |
||
| 130 | for(var j=0;j<_b.length;j++){ |
||
| 131 | if(_b[j].checked){
|
||
| 132 | _d++; |
||
| 133 | } |
||
| 134 | } |
||
| 135 | if(_d<_e){
|
||
| 136 | _3[_3.length]=_b[0].name;
|
||
| 137 | } |
||
| 138 | }else{
|
||
| 139 | if(!_8("type",_b)&&_b.type=="select-multiple"){ |
||
| 140 | var _10=0; |
||
| 141 | for(var j=0;j<_b.options.length;j++){ |
||
| 142 | if(_b.options[j].selected&&!/^\s*$/.test(_b.options[j].value)){ |
||
| 143 | _10++; |
||
| 144 | } |
||
| 145 | } |
||
| 146 | if(_10<_e){
|
||
| 147 | _3[_3.length]=_b.name; |
||
| 148 | } |
||
| 149 | } |
||
| 150 | } |
||
| 151 | } |
||
| 152 | } |
||
| 153 | if(dojo.isObject(_2.dependencies)){
|
||
| 154 | for(_f in _2.dependencies){ |
||
| 155 | var _b=_1[_f];
|
||
| 156 | if(_8("type",_b)){ |
||
| 157 | continue;
|
||
| 158 | } |
||
| 159 | if(_b.type!="text"&&_b.type!="textarea"&&_b.type!="password"){ |
||
| 160 | continue;
|
||
| 161 | } |
||
| 162 | if(/\S+/.test(_b.value)){ |
||
| 163 | continue;
|
||
| 164 | } |
||
| 165 | if(_5.isMissing(_b.name)){
|
||
| 166 | continue;
|
||
| 167 | } |
||
| 168 | var _11=_1[_2.dependencies[_f]];
|
||
| 169 | if(_11.type!="text"&&_11.type!="textarea"&&_11.type!="password"){ |
||
| 170 | continue;
|
||
| 171 | } |
||
| 172 | if(/^\s*$/.test(_11.value)){ |
||
| 173 | continue;
|
||
| 174 | } |
||
| 175 | _3[_3.length]=_b.name; |
||
| 176 | } |
||
| 177 | } |
||
| 178 | if(dojo.isObject(_2.constraints)){
|
||
| 179 | for(_f in _2.constraints){ |
||
| 180 | var _b=_1[_f];
|
||
| 181 | if(!_b){
|
||
| 182 | continue;
|
||
| 183 | } |
||
| 184 | if(!_8("tagName",_b)&&(_b.tagName.toLowerCase().indexOf("input")>=0||_b.tagName.toLowerCase().indexOf("textarea")>=0)&&/^\s*$/.test(_b.value)){ |
||
| 185 | continue;
|
||
| 186 | } |
||
| 187 | var _12=true; |
||
| 188 | if(dojo.isFunction(_2.constraints[_f])){
|
||
| 189 | _12=_2.constraints[_f](_b.value); |
||
| 190 | }else{
|
||
| 191 | if(dojo.isArray(_2.constraints[_f])){
|
||
| 192 | if(dojo.isArray(_2.constraints[_f][0])){ |
||
| 193 | for(var i=0;i<_2.constraints[_f].length;i++){ |
||
| 194 | _12=dojox.validate.evaluateConstraint(_2,_2.constraints[_f][i],_f,_b); |
||
| 195 | if(!_12){
|
||
| 196 | break;
|
||
| 197 | } |
||
| 198 | } |
||
| 199 | }else{
|
||
| 200 | _12=dojox.validate.evaluateConstraint(_2,_2.constraints[_f],_f,_b); |
||
| 201 | } |
||
| 202 | } |
||
| 203 | } |
||
| 204 | if(!_12){
|
||
| 205 | _4[_4.length]=_b.name; |
||
| 206 | } |
||
| 207 | } |
||
| 208 | } |
||
| 209 | if(dojo.isObject(_2.confirm)){
|
||
| 210 | for(_f in _2.confirm){ |
||
| 211 | var _b=_1[_f];
|
||
| 212 | var _11=_1[_2.confirm[_f]];
|
||
| 213 | if(_8("type",_b)||_8("type",_11)||(_b.type!="text"&&_b.type!="textarea"&&_b.type!="password")||(_11.type!=_b.type)||(_11.value==_b.value)||(_5.isInvalid(_b.name))||(/^\s*$/.test(_11.value))){ |
||
| 214 | continue;
|
||
| 215 | } |
||
| 216 | _4[_4.length]=_b.name; |
||
| 217 | } |
||
| 218 | } |
||
| 219 | return _5;
|
||
| 220 | }; |
||
| 221 | dojox.validate.evaluateConstraint=function(_13,_14,_15,_16){ |
||
| 222 | var _17=_14[0]; |
||
| 223 | var _18=_14.slice(1); |
||
| 224 | _18.unshift(_16.value); |
||
| 225 | if(typeof _17!="undefined"){ |
||
| 226 | return _17.apply(null,_18); |
||
| 227 | } |
||
| 228 | return false; |
||
| 229 | }; |
||
| 230 | } |