//******************************************************************* //* Nombre: //* checkForm.js //* //* Descripcion: //* Esta funci\363n valida los campos de un formulario //* desde una plantilla html se definen campos obligatorios //* como campos "hidden". Nombre de estos campos tiene que ser contruido //* por un prefijo //* Donde los prefijos posibles son: //* r_ - valida campos alfanumericos //* i_ - valida campos enteros //* e_ - valida campos enteros //* d_ - valida campos de fecha de formato definido por un expresion regular: \\d{4}/\\d{2}/\\d{2} //* c_ - valida campos de correo electronico //* v_ - valida campos de versiones formato definido por una expresion regualr: \\d+\.\\d+ e.g.:(2.0, 3.1) //* //* //* Parametros: //* Objeto Formulario que se quiere validar //* Su Numero de elementos //* //* Valor de retorno: //* true -> Si la varidacion ha sido correcta se envia formulario //* false -> Si algun valor introducido por el usuario era //* incorrecto : correspondiente mensaje de error //*******************************************************************/ var new_fieldname = "" var validar_form_e1 = "" ; var validar_form_e21 = "Casilla" ; var validar_form_e22 = "es obligatoria" ; var validar_form_e32 = "es incorrecta" ; var validar_form_e42 = "no puede contener espacios en blanco" ; var validar_form_e43 = "Tiene que introducir una cuenta de correo v\341lida " ; var validar_form_e43_en = "Invalid E-mail address " ; var validar_form_e52 = "no puede seleccionar la opcion vac\355a" ; var validar_form_e62 = "debe ser un n\372mero entero" ; var validar_form_e72 = "debe ser un n\372mero entero" ; var validar_form_e82 = "debe ser num\351rico" ; var validar_form_e114 = "Reduzca el texto del campo" ; var validar_form_e115 = "caracteres" ; var validar_form_e92 = "debe estar comprendido entre " ; var validar_form_e93 = "y" ; var validar_form_e102 = "debe ser mayor que " ; var validar_form_e112 = "debe ser menor que " ; var validar_form_e120 = "Tiene que introducir una version valida, e.g 2.0 " ; function check(form,x) { var ok = true; var message = ""; var more_message = ""; var showmsg = "no"; x = x-1; for (var i=0; i<= x; i++) { var messenger = form.elements[i].name; messenger = messenger.substring(0, 2); var fieldname = form.elements[i].name; fieldname = fieldname.substring(2); if (messenger == "r_") { more_message = r_check(form,x,fieldname,i); } else if (messenger == "i_") { more_message = i_check(form,x,fieldname,i); } else if (messenger == "e_") { more_message = e_check(form,x,fieldname,i); } else if (messenger == "d_") { more_message = d_check(form,x,fieldname,i); } else if (messenger == "c_") { more_message = c_check(form,x,fieldname,i); } else if (messenger == "x_") { more_message = x_check(form,x,fieldname,i); }else if (messenger == "v_") { more_message = v_check(form,x,fieldname,i); } if (more_message != "") { if (message == "") { message = more_message; more_message=""; } else { message = message + "\n" + more_message; more_message = ""; ok = false; } } if (message > "") { showmsg = "si"; ok = false; } } if (showmsg == "si") { more_message = validar_form_e1 + "\n"; //alert(" Campos incorrectos o incompletos:\n\n" + message ); alert(more_message + message ); ok = false; } return ok; } function r_check(form,x,fieldname,i) { var msg_addition = ""; new_fieldname = fieldname; for (var y = 0; y <= x; y++) { if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == true) { msg_addition = ""; break; } else if ((form.elements[y].type == "radio" || form.elements[y].type == "checkbox") && form.elements[y].name == new_fieldname && form.elements[y].checked == false) { msg_addition = form.elements[i].value; } else if (form.elements[y].type == "select-one") { var l = form.elements[y].selectedIndex; if (form.elements[y].name == fieldname && form.elements[y].options[l].value != "") { msg_addition = ""; break; } else if (form.elements[y].name == fieldname && form.elements[y].options[l].value == "") { msg_addition = form.elements[i].value; } } else if (form.elements[y].name == fieldname && form.elements[y].value == "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") { msg_addition = form.elements[i].value; break; } else if (form.elements[y].name == fieldname && form.elements[y].value != "" && form.elements[y].type != "radio" && form.elements[y].type != "checkbox" && form.elements[y].type != "select-one") { msg_addition = ""; } } return(msg_addition); } function c_check(form,x,fieldname,i) { var msg_addition = ""; for (var y = 0; y <= x; y++) { var valor= form.elements[y].value; if (form.elements[y].name == fieldname ){ if( valor == "" ){ msg_addition = form.elements[i].value; } else if( valor.indexOf("@") == -1 || valor.indexOf("@") == 0 || valor.indexOf("@") == valor.length - 1) { msg_addition += validar_form_e43 + "\n"; break; } } } return(msg_addition); } function x_check(form,x,fieldname,i) { var msg_addition = ""; for (var y = 0; y <= x; y++) { var valor= form.elements[y].value; if (form.elements[y].name == fieldname ){ if( valor == "" ){ msg_addition = form.elements[i].value; } else if( valor.indexOf("@") == -1 || valor.indexOf("@") == 0 || valor.indexOf("@") == valor.length - 1) { msg_addition += validar_form_e43_en + "\n"; break; } } } return(msg_addition); } function i_check(form,x,fieldname,i) { var msg_addition = ""; for (var y = 0; y <= x; y++) { if (form.elements[y].name == fieldname) break; } inputStr = form.elements[y].value.toString(); if (inputStr == "") { msg_addition = form.elements[i].value; } else { for (var c = 0; c < inputStr.length; c++) { var oneChar = inputStr.charAt(c); if (c == 0 && oneChar == "-") { continue } if (oneChar < "0" || oneChar > "9") { msg_addition = form.elements[i].value } } } return(msg_addition); } //Valida enteros function e_check(form,x,fieldname,i) { var msg_addition = ""; for (var y = 0; y <= x; y++) { if (form.elements[y].name == fieldname) break; } inputStr = form.elements[y].value.toString(); if (inputStr != "") { for (var c = 0; c < inputStr.length; c++) { var oneChar = inputStr.charAt(c); if (c == 0 && oneChar == "-") { continue } if (oneChar < "0" || oneChar > "9") { msg_addition = form.elements[i].value } } } return(msg_addition); } function d_check(form,x,fieldname,i) { for (var y=0; y <= x; y++) { if (form.elements[y].name == fieldname) break; } var msg_addition = "" var pattern = new RegExp("\\d{4}/\\d{2}/\\d{2}","g") ; var sDate = form.elements[y].value ; var OK = pattern.test(sDate) ; if ( ! OK ) { msg_addition = form.elements[i].value } return (msg_addition) ; } function v_check(form,x,fieldname,i) { for (var y=0; y <= x; y++) { if (form.elements[y].name == fieldname) break; } var msg_addition = "" var pattern = new RegExp("^\\d+\.\\d+\\w*$") ; var sDate = form.elements[y].value ; var OK = pattern.test(sDate) ; if ( ! OK ) { //msg_addition += validar_form_e1120 + "\n"; msg_addition += form.elements[i].value } return (msg_addition) ; } function isInteger(sDate) { var new_msg = "true"; inputStr = sDate.toString(); for (var i = 0; i < inputStr.length; i++) { var oneChar = inputStr.charAt(i); if ((oneChar < "0" || oneChar > "9") && oneChar != "/") { new_msg = "false"; } } return (new_msg); } function asc(each_char) { var n = 0; var char_str = charSetStr(); for (i = 0; i < char_str.length; i++) { if (each_char == char_str.substring(i, i+1)) { break; } } return i + 32; } function charSetStr() { var str = ' !"#$%&' + "'" + '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'; return str; }