1// @-----------------------------------------------------@ 2// |MGMD FORM VALIDATOR _||_ | 3// |MGMD LTDA TODOS LOS DERECHOS RESERVADOS |T\/T| | 4// | |I__I| | 5// |http://www.magdalenamedio.net || | 6// @-----------------------------------------------------@ 7var validInst ; // VARIABLE DE INSTANCIACION DE LA CLASE 8// CONSTRUCTOR 9// RECEBE TIPOS DE ALERTA (INT, 1-2) 10// RECIBE DIV (STRING, DIV ID) 11function Validator(msgAlertType, div, extra) 12{ 13 14 // INSTANCIACION DE VARIABLES GLOBALES 15 this.msgAlertType = msgAlertType ? msgAlertType : 1 ; 16 this.div = div ? div : '' ; 17 this.validables = new Array() ; // INSTANCIA DE ARREGLO DE CAMPOS VALIDABLES 18 this.valid = true ; 19 this.validatorMsg = '' ; 20 this.extra = extra; 21 this.form = this.getForm() ; // INSTANCIAMIENTO DE LA VARIABLE GLOBAL DEL FORMULARIO CON LA FUNCION LO BUSCA 22 // VERIFICA SI HAY O NO HAY FORMULARIO 23 if ( (typeof this.form != "undefined") && (this.form != null) ) 24 { 25 this.searchRequiredFields() ; // BUSCA CAMPOS REQUERIDOS 26 27 this.addButtonEventHandler() ; // AGREGA EL HANDLER AL EVENTO CLICK DEL BOTON 28 } 29} 30// BUSCA EL FORMULARIO QUE TENGA ID 'VALIDABLE' Y RETORNA EL FORMULARIO 31Validator.prototype.getForm = function () {
32 return document.getElementById('validable'); 33 34 } ; 35// BUSCA LOS CAMPOS REQUERIDOS 36Validator.prototype.searchRequiredFields = function () { 37 var count = 0 ; 38 39 for ( i = 0 ; i < this.form.elements.length ; i++ ) 40 { 41 // SI EL NOMBRE DE LA CLASE DEL CAMPO ES 'REQUIRED', EL CAMPO ES REQUERIDO 42 if ( (typeof this.form.elements[i].className != "undefined") && (this.form.elements[i].disabled == false) && (this.form.elements[i].className.search("notValidable") == -1) ) 43 { 44 // AGREGAMOS UN CAMPO VALIDABLE AL ARREGLO 45 this.validables[count] = this.form.elements[i] ; 46 // ENVIAMOS EL CAMPO A LA FUNCION DE VERIFICACION DE HANDLERS REQUERIDOS 47 this.addNeededEventHandler(this.validables[count]) ; 48 49 count++ ; 50 51 } 52 } 53 } ; 54// AGREGA EL HANDLER AL BOTON PARA EL EVENTO 'CLICK' 55Validator.prototype.addButtonEventHandler = function () { 56 this.form.onsubmit = function (e) { 57 return validInst.checkRequiredFields(e) ; 58 }; 59 60 } ; 61// VERIFICA EL VALOR Y EL ESTADO DE LOS CAMPOS REQUERIDOS LUEGO DEL EVENTO 'CLICK' DEL BOTON 62Validator.prototype.checkRequiredFields = function (e, showAlert) { 63 if(typeof showAlert === 'undefined') { 64 showAlert = true; 65 } 66 var actualElement = '' ; 67 this.validatorMsg = '' ; 68 this.valid = true ; // FORMULARIO VALIDO POR DEFECTO 69 70 // RECORRE EL ARREGLO DE CAMPOS REQUERIDOS 71 validatedComic = false; 72 for(field in this.validables) 73 { 74 actualElement = this.validables[field] ; // DEFINE EL ELEMENTO ACTUAL 75 var actualValid = true ; // CAMPO ACTUAL POR DEFECTO VALIDO 76 var extra = '' ; // VARIABLE VACIA PARA DATO EXTRA DEL CAMPO NO VALIDO 77 // SWITCH POR TIPO DE CAMPO 78 switch (actualElement.type){ 79 case 'text': 80 // VERIFICAR SI EL CAMPO ESTA VACIO 81 if((actualElement.value == "") && (actualElement.className.search("optional") == -1)) 82 { 83 this.valid = false ; // CAMBIA EL ESTADO DEL FORMULARIO 84 // A INVALIDO 85 86 actualValid = false ; // CAMBIA EL ESTADO DEL CAMPO ACTUAL 87 // A INVALIDO 88 89 extra = 'Campo Vacio' ; // INFORMACION EXTRA DEL CAMPO INVALIDO 90 91 } 92 // VERIFICAR SI EL CAMPO TIENE DATO EXTRA DE EMAIL 93 else if((actualElement.className.search("email") > -1)) 94 { 95 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 96 // RETORNA VERDADERO O FALSO 97 if(!this.checkEmail(actualElement.value)) 98 { 99 this.valid = false ; 100 101 actualValid = false ; 102 103 extra = 'Formato Invalido' ; 104 } 105 } 106 else if((actualElement.className.search("minmax") > -1) && (actualElement.value != "")) 107 108 { 109 110 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 111 112 // RETORNA VERDADERO O FALSO 113 114 if(actualElement.value.length < actualElement.alt.split('-')[0]) 115 116 { 117 118 this.valid = false ; 119 120 121 122 actualValid = false ; 123 124 125 extra = 'Numero de caracteres menor a ' + actualElement.alt; 126 127 } 128 else if(actualElement.value.length > actualElement.alt.split('-')[1]) 129 130 { 131 132 this.valid = false ; 133 134 135 136 actualValid = false ; 137 138 139 extra = 'Numero de caracteres mayor a ' + actualElement.alt; 140 141 } 142 143 } 144 else if(actualElement.className.search("retype") > -1) 145 {
146 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 147 // RETORNA VERDADERO O FALSO 148 if(actualElement.value != document.getElementById(actualElement.alt).value) 149 { 150 this.valid = false ; 151 152 actualValid = false ; 153 154 extra = 'No coincide con el valor de ' + document.getElementById(actualElement.alt).title; 155 } 156 } 157 break; 158 case 'select-one': 159 // RECORRE CADA OPCION DEL CAMPO SELECT 160 for(i=0;i<actualElement.options.length;i++) 161 { 162 // ENTRA SI EL CAMPO ESTA SELECCIONADO 163 if(actualElement.options[i].selected == true) 164 { 165 // VERIFICA SI EL VALOR DEL CAMPO ACTUAL ES 'NULL' 166 if(actualElement.options[i].value == 'NULL') 167 { 168 this.valid = false ; 169 actualValid = false ; 170 extra = 'Ninguna Opcion Seleccionada' ; 171 } 172 break; 173 } 174 } 175 break; 176 case 'textarea': 177 // VERIFICAR SI EL CAMPO ESTA VACIO 178 if(actualElement.value == "") 179 { 180 this.valid = false ; 181 actualValid = false ; 182 extra = 'Campo Vacio' ; 183 184 } 185 break; 186 case 'password': 187 if((actualElement.value == "") && (actualElement.className.search("optional") == -1)) 188 { 189 this.valid = false ; // CAMBIA EL ESTADO DEL FORMULARIO 190 // A INVALIDO 191 192 actualValid = false ; // CAMBIA EL ESTADO DEL CAMPO ACTUAL 193 // A INVALIDO 194 195 extra = 'Campo Vacio' ; // INFORMACION EXTRA DEL CAMPO INVALIDO 196 197 } 198 else if(actualElement.className.search("retype") > -1) 199 { 200 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 201 // RETORNA VERDADERO O FALSO 202 if(!((document.getElementById(actualElement.alt).className.search("optional") > -1) && (document.getElementById(actualElement.alt).value == ""))) 203 { 204 if(actualElement.value != document.getElementById(actualElement.alt).value) 205 { 206 this.valid = false ; 207 208 actualValid = false ; 209 210 extra = 'No coincide con el valor de ' + document.getElementById(actualElement.alt).title; 211 } 212 } 213 } 214 else if((actualElement.className.search("minimum") > -1) && (actualElement.value != "")) 215 { 216 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 217 // RETORNA VERDADERO O FALSO 218 if(actualElement.value.length < actualElement.alt) 219 { 220 this.valid = false ; 221 222 actualValid = false ; 223 224 extra = 'Numero de caracteres menor a ' + actualElement.alt; 225 } 226 } 227 break; 228 case 'checkbox': 229 if(actualElement.className.search("accept") > -1) 230 { 231 // VERIFICA SI LA FUNCION VERIFICADORA DE ESTRUCTURA DE MAIL 232 // RETORNA VERDADERO O FALSO 233 if(actualElement.checked == false) 234 { 235 this.valid = false ; 236 237 actualValid = false ; 238 239 this.validatorMsg += 'Debe aceptar los terminos y condiciones para continuar' ; 240 } 241 } 242 break; 243 case 'file': 244 // VERIFICAR SI EL CAMPO ESTA VACIO 245 if(actualElement.value == "") 246 { 247 this.valid = false ; // CAMBIA EL ESTADO DEL FORMULARIO 248 // A INVALIDO 249 250 actualValid = false ; // CAMBIA EL ESTADO DEL CAMPO ACTUAL 251 // A INVALIDO 252 253 extra = 'Campo Vacio' ; // INFORMACION EXTRA DEL CAMPO INVALIDO 254 255 } 256 break; 257 } 258 // ENTRA SI EL CAMPO ACTUAL NO ES VALIDO 259 if(!actualValid) 260 { 261 // CONSTRUYE EL MENSAJE QUE SALE SI EL FORMULARIO NO ES VALIDO 262 if(actualElement.title == 'Vi�eta') 263 { 264 if(validatedComic == false) 265 { 266 validatedComic = true; 267 this.validatorMsg += 'Por favor revisa que todo el comic esté diligenciado'; 268 this.validatorMsg += '{linebreak}' ; 269 } 270 } 271 else 272 { 273 this.validatorMsg += '*'+actualElement.title ; 274 this.validatorMsg += '{linebreak}' ; 275 } 276
277 // VERIFICA SI TIENE QUE SACAR LA INFORMACION EXTRA DEL CAMPO ACTUAL 278 if(this.extra) 279 this.validatorMsg += '. ' + extra + ' ' ; 280 281 282 } 283 } 284 // ENTRA SI EL FORMULARIO NO ES VALIDO 285 if(!this.valid) 286 { 287 // TIRA LA ALERTA 288 if(showAlert) { 289 this.throwAlert(); 290 } 291 return false; 292 } 293 } ; 294 // FUNCION QUE VERIFICA LA ESTRUCTURA DEL MAIL 295 Validator.prototype.checkEmail = function(elementValue) { 296 var at="@" 297 var dot="." 298 var lat=elementValue.indexOf(at) 299 var lstr=elementValue.length 300 var ldot=elementValue.indexOf(dot) 301 if (elementValue.indexOf(at)==-1){ 302 return false 303 } 304 if (elementValue.indexOf(at)==-1 || elementValue.indexOf(at)==0 || elementValue.indexOf(at)==lstr){ 305 return false 306 } 307 if (elementValue.indexOf(dot)==-1 || elementValue.indexOf(dot)==0 || elementValue.indexOf(dot)==lstr){ 308 return false 309 } 310 if (elementValue.indexOf(at,(lat+1))!=-1){ 311 return false 312 } 313 if (elementValue.substring(lat-1,lat)==dot || elementValue.substring(lat+1,lat+2)==dot){ 314 return false 315 } 316 if (elementValue.indexOf(dot,(lat+2))==-1){ 317 return false 318 } 319 320 if (elementValue.indexOf(" ")!=-1){ 321 return false 322 } 323 324 return true 325 } ; 326 327// AGREGA LOS HANDLERS NECESARIOS A CAMPOS DE VERIFICACION 328Validator.prototype.addNeededEventHandler = function(element) { 329 // SWITCH CON EL TAG 'ALT' DEL CAMPO 330 if (element.className.search('text-only') > -1){ 331 // AGREGA LA FUNCION DE VERIFICACION DE SOLO TEXTO AL EVENTO 'KEYPRESS' 332 element.onkeypress = function (e) { 333 return validInst.validateText(e) ; 334 }; 335 336 } 337 else if (element.className.search('numeric') > -1) { 338 // AGREGA LA FUNCION DE VERIFICACION DE SOLO NUMEROS AL EVENTO 'KEYPRESS' 339 element.onkeypress = function (e) { 340 return validInst.validateNumber(e) ; 341 }; 342 } 343 } ; 344 345// VALIDA QUE EL CAMPO TENGA SOLO TEXTO 346Validator.prototype.validateText = function (e) { 347 348 // REVISA QUE TECLA SE PRESIONO UTILIZANDO EL EVENTO LANZADO 349 var key = (e) ? e.which : window.event.keyCode; 350 351 // ENTRA SI LA TECLA NO ES SOLO TEXTO 352 if ((key < 65 && key != 32 && key != 46 & key != 8 & key != 0) || key > 122 || (key > 90 && key < 97)) 353 return false; 354 return true; 355 } ; 356// VALIDA QUE EL CAMPO TENGA SOLO NUMEROS 357Validator.prototype.validateNumber = function (e) { 358 359 // REVISA QUE TECLA SE PRESIONO UTILIZANDO EL EVENTO LANZADO 360 var key = (e) ? e.which : window.event.keyCode; 361 // ENTRA SI LA TECLA NO ES SOLO NUMEROS 362 if (key > 31 && (key < 48 || key > 57)) 363 return false; 364 365 return true; 366 } ; 367// FUNCION QUE TIRA LA ALERTA 368Validator.prototype.throwAlert = function() 369 { 370 // INSTANCIA LA VARIABLE MENSAJE CON UN TEXTO 371 var msg = 'Hay errores en los datos ingresados:' 372 // HACE UN SWITCH CON EL TIPO DE ALERTA QUE SE HAYA ESTABLECIDO (1 - HTML, 2 - ALERTA) 373 switch(this.msgAlertType) 374 { 375 case 1: 376 // CONSTRUYE EL MENSAJE CON LOS CAMPOS INVALIDOS 377 // Y REMPLZA EL {LINEBREAK} POR \R\N 378 msg += '\r\n' + this.validatorMsg.replace(/{linebreak}/g, "\r\n"); 379 alert(msg) ; 380 break; 381 case 2: 382 var target = document.getElementById(this.div); 383 384 // MUESTRA EL DIV SI ESTA ESCONDIDO 385 if(target.style.display == 'none') 386 { 387 target.style.display = ''; 388 } 389 var target2 = document.getElementById('TB_overlay'); 390 target2.style.display = ''; 391 // CONSTRUYE EL MENSAJE CON LOS CAMPOS INVALIDOS 392 // Y REMPLZA EL {LINEBREAK} POR <BR/> 393 target.innerHTML = '<div class="alerta lpv2 clearfix"><a href="#" onclick="" class="cerrar_lb" title="Cerrar">Cerrar</a><div class="icon_adv"><img src="' + ApplicationUrl + 'img/web-plp/content/icon_2.png" width="107" height="108" alt="" /></div><div class="txt_adv txt20"><div class="cell"><div class="valign"><p>Hay errores en los datos ingresados</p><p>' + this.validatorMsg.replace(/{linebreak}/g, "<br/>") + '</p></div><!--valign--></div><!--cell--></div><!--txt_adv--></div><!--alerta-->'; 394 $('.cerrar,.cerrar_lb').click(function (evt) { 395 evt.preventDefault(); 396 $('.popup-aliados').fadeOut(); 397 $('.popup,.alerta,#lightbox').fadeOut(); 398 $('#TB_overlay').fadeOut(); 399 }); 400 break; 401 } 402 } ; 403 if($('#lightbox').length > 0){ 404 405 $(document).ready( function () { validInst = new Validator(2, 'lightbox', false); }); 406 } 407 else { 408 $(document).ready( function () { validInst = new Validator(1, '', true); }); 409 }
410 var validatedComic = false;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.