MozillaES.org
«La comunidad de Mozilla en español»

validar formulario

Crear páginas para Gecko, diferencias con IE, articulos de interés y recursos en español

validar formulario

Notapor blos » Lun Feb 12, 2007 1:47 am

Hola, mi duda es la siguiente. Tengo un formulario que deseo validar. Para ello he desarrollado una función bastante grande que va a la perfección en Internet Explorer, pero que en Firefox parece que ni entra a leerla. ¿Sabeis si tengo que hacer algo especial para que Firefox la reconozca? Os copio el código (que es grande):

[b]Llamada a la función (ASP):[/b]
<form method = "POST" id="form" name = "form" onSubmit="return validalo_todo()" action ="default.asp?opcion=5">

[b]Función (en Javascript)[/b]
<SCRIPT LANGUAGE=JScript>
function validalo_todo()
{
if( esletra(form.nombre.value) == false )
{
alert("El nombre introducido no puede contener caracteres especiales ni números.");
return false;
}
if( vacio(form.nombre.value) == false )
{
alert("Por favor, introduzca su nombre.");
return false;
}
if( esletra(form.apellidos.value) == false )
{
alert("El/los apellido/s introducido/s no puede/n contener caracteres especiales ni números.");
return false;
}
if( vacio(form.apellidos.value) == false )
{
alert("Por favor, introduzca su/s apellido/s.");
return false;
}
if( mail(form.mail.value) == false )
{
alert("Por favor, introduzca una dirección de e-mail correcta.");
return false;
}
if( vacio(form.mail.value) == false )
{
alert("Por favor, introduzca una dirección de e-mail.");
return false;
}
if( esnumero(form.telefono.value) == false )
{
alert("Por favor, introduzca un teléfono correcto.");
return false;
}
if( vacio(form.telefono.value) == false )
{
alert("Por favor, introduzca su teléfono.");
return false;
}
if( vacio(form.calle.value) == false )
{
alert("Por favor, introduzca la calle.");
return false;
}
if( vacio(form.codigo_postal.value) == false )
{
alert("Por favor, introduzca su código postal.");
return false;
}
if( esnumero(form.codigo_postal.value) == false )
{
alert("El código postal debe ser en número.");
return false;
}
if( escodigopostal(form.codigo_postal.value) == false )
{
alert("El código postal debe contener 5 dígitos.");
return false;
}
if( vacio(form.municipio.value) == false )
{
alert("Por favor, introduzca su municipio.");
return false;
}
if( vacio(form.provincia.value) == false )
{
alert("Por favor, introduzca su provincia.");
return false;
}
if( vacio(form.login.value) == false )
{
alert("Por favor, introduzca el login con el que desea registrarse.");
return false;
}
if( vacio(form.password.value) == false )
{
alert("Por favor, introduzca la palabra clave con la que desea registrarse.");
return false;
}
if (form.password.value!=form.password2.value)
{
alert("Los passwords introducidos no coinciden.");
return false;
}
else
{
return true;
}
}
function esletra(t)
{
var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ" + "a?????bcdefghijklmnñopqrstuvwxyzáéíóú ";
var checkStr = t;
var allValid = true;
for (i = 0; i < checkStr.length; i++)
{
ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
}
if (!allValid)
{
return false;
}
}

function mail(q)
{
var b=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/
return b.test(q)
}

function esnumero(t)
{
var checkOK = "0123456789";
var checkStr = t;
var allValid = true;
var decPoints = 0;
var allNum = "";
var ch;
var i;
for (i = 0; i < checkStr.length; i++)
{
var ch = checkStr.charAt(i);
for (j = 0; j < checkOK.length; j++)
{
if (ch == checkOK.charAt(j))
{
break;
}
}
if (j == checkOK.length)
{
allValid = false;
break;
}
allNum += ch;
}
if (!allValid)
{
return false;
}
}


function vacio(q)
{
for ( i = 0; i < q.length; i++ )
{
if ( q.charAt(i) != " " )
{
return true;
}
}
return false;
}

function escodigopostal(field) {
var valid = "0123456789-";
var hyphencount = 0;

if (field.length!=5 && field.length!=10) {
return false;
}
for (var i=0; i < field.length; i++) {
temp = "" + field.substring(i, i+1);
if (temp == "-") hyphencount++;
if (valid.indexOf(temp) == "-1") {
return false;
}
if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
return false;
}
}
return true;
}
</script>







Gracias anticipadas, saludos!!!
blos
 

puede que sea esto

Notapor undest » Vie Feb 16, 2007 12:44 am

Caballero para acceder a los controles se debe usar document.getElementById("origen") donde origen es el nombre del control al que desea acceder, puede enviar esto a una variable y para obtener el valor añada ".value"
undest
 

Re: validar formulario

Notapor airon » Lun Ago 31, 2009 1:34 am

Código: Seleccionar todo
<script language="JavaScript">
function cargar(){
   valor = document.getElementById("nombre").value;
   valor2 = document.getElementById("banda").value;
   valor3 = document.getElementById("bandaweb").value;
   valor4 = document.getElementById("direlimosna").value;      
   valor5 = document.getElementById("cdglimosna").value;
   valor6 = document.getElementById("email").value;
   valor7 = document.getElementById("email2").value;
    if(valor == null || valor.length == 0 || /^\s+$/.test(valor) ) {
      // Si no se cumple la condicion...
    alert('[ERROR] El campo "Nombre" esta VACIO');
    return false;
  }
  else if( valor2 == null || valor2.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('Si no dispones de banda,Escribe NO');
    return false;
  }
  else if( valor3 == null || valor3.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('Si no dispones de web,Escribe NO');
    return false;
  }
  else if( valor4 == null || valor4.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('[ERROR] El campo "url donaciones" esta VACIO');
    return false;
  }
  else if( valor5 == null || valor5.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('[ERROR] El campo "codigo" esta VACIO');
    return false;
  }
  else if( valor6 == null || valor6.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('[ERROR] El campo "Email" esta VACIO');
    return false;
  }
  else if( valor7 == null || valor7.length == 0 || /^\s+$/.test(valor) ) {
    // Si no se cumple la condicion...
    alert('[ERROR] El campo "Repite tu email" esta VACIO');
    return false;
}
  return true;
}
</script>


llamado desde
Código: Seleccionar todo
<form method="post" action="code.php" onsubmit="return cargar();">


En ixplorer si funciona pero en firefox no.
¿Porque en firefox no me funciona?

GRACIAS
airon
 

Re: validar formulario

Notapor YouWoTMA » Lun Ago 31, 2009 1:50 pm

No lo he probado. Solamente voy a corregir las cosas incorrectas que veo al vuelo, y a formatear mejor el codigo
Código: Seleccionar todo
<script type="text/javascript">
function cargar(){
  try{
   var campos = [
     ["nombre","El campo \"nombre\" esta VACIO"],
     ["banda","Si no dispones de banda,Escribe NO"],
     ["bandaweb","Si no dispones de web,Escribe NO"],
     ["direlimosna","[ERROR] El campo \"url donaciones\" esta VACIO"],
     ["cdglimosna","[ERROR] El campo \"codigo\" esta VACIO"],
     ["email","[ERROR] El campo \"Email\" esta VACIO"]
     ["email2","[ERROR] El campo \"Repite tu email\" esta VACIO"]
   ];

   for(var i = 0, l = campos.length; i<l; i++){
       var campo = campos[i];
       var valor = document.getElementById(campo[0]).value;
       if(!valor || /^\s*$/.test(valor)){
          alert(campo[1]);
      return false;
       }
   }
   return true;
  }catch(e){
      alert("Ha ocurrido un error: " + e);
  }
}
</script>


Si te sale algún error (he puesto un try-catch por que veo que no eres de los que miran la consola de errores) avisame y tratare de corregirlo.
YouWoTMA
Recién llegado
Recién llegado
 
Mensajes: 3
Registrado: Dom Jul 05, 2009 10:34 am

Re: validar formulario

Notapor Airon » Lun Ago 31, 2009 7:41 pm

Ya encontre el fallo.......... :rolls eyes:

Código: Seleccionar todo
<input type="text" id='Nombre' name="nombre" value="">


y deberia de ser

Código: Seleccionar todo
<input type="text" id='nombre' name="nombre" value="">


Por la diferencia de una N . n me rompe el script .

De todas maneras te agradezco mucho :-D la reescritura del codigo , ahora esta mucho mejor ordenado y entendible.
Voy a porbarlo y te cuento. ;)
Airon
 


Volver a Desarrollo web (HTML/CSS/JS, accesibilidad...)

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados