Problemas con formularios

Estado
Cerrado para nuevas respuestas

Lexus

Nuevo Miembro
Miembro
Hola a todos!

Os escribo porque tengo problemas a la hora de validar un formulario con JavaScript.

El fallo se supone que está en el Javascript, pero al abrir el documento y probar la validación, salen cosas un poco raras.

El tema creo que tiene que ser problema de las expresones regulares.

Veamos, éste es mi formulario:

Insertar CODE, HTML o PHP:
<form id="formulario" name="formulario" action="mail2.php" method="POST" onsubmit="return validar(this)">

<fieldset>

<legend>Formulario de reserva de pistas</legend>

<label for="nsocio">Nº de socio:</label><input type="text" id="nsocio" name="nsocio" maxlength="3" size="3" tabindex="1"/>

<label for="dni">DNI:</label><input type="text" id="dni" name="dni" maxlength="8" size="8" tabindex="2"/>

</p>

<label for="nombre">Nombre:</label><input type="text" id="nombre" name="nombre" maxlength="40" size="30" tabindex="3"/>

<label for="apellidos">Apellidos:</label><input type="text" id="apellidos" name="apellidos" maxlength="60" size="50" tabindex="4"/>

</p>

<input type="image" src="images/enviar.gif" alt="Enviar" id="enviar" name="enviar" />

Imagen Perdida/Rota

</p>

</fieldset>

</form>
Y éste es el script, que lo he modificado un poquito para que no haya que fijarse en tantas cosas como el real (este no me funciona tampoco, claro):

Insertar CODE, HTML o PHP:
<script type="text/javascript">

patron1 =/\d/;

patron2 =/[a-zA-Z]/;

function validar(formulario){

if(formulario.nsocio.value ==""){

alert("¡¡ Debes ingresar el Número de Socio !!");

formulario.nsocio.focus();

return(false);

}

else if(formulario.dni.value ==""){

alert("¡¡ Debes ingresar el DNI !!");

formulario.dni.focus();

return(false);

}

else if(formulario.nombre.value ==""){

alert("¡¡ Debes ingresar el Nombre !!");

formulario.nombre.focus();

return(false);

}

else if(formulario.apellidos.value ==""){

alert("¡¡ Debes ingresar los Apellidos !!");

formulario.apellidos.focus();

return(false);

}

else if(!patron1.test(formulario.nsocio.value)){

alert("¡¡ El Número de Socio sólo puede contener números !!");

formulario.nsocio.focus();

return(false);

}

else if(!patron1.test(formulario.dni.value)){

alert("¡¡ El DNI sólo puede contener números !!");

formulario.dni.focus();

return(false);

}

else if(!patron2.test(formulario.nombre.value)){

alert("¡¡ Ése no es un Nombre válido !!");

formulario.nombre.focus();

return(false);

}

else if(!patron2.test(formulario.apellidos.value)){

alert("¡¡ Esos no son Apellidos válidos !!");

formulario.apellidos.focus();

return(false);

}

else{

return(true);

}

}

</script>
Como podéis ver, el script utiliza expresiones regulares para validar los campos.

Bien, el asunto es el siguiente. La validación del campo vacío funciona sin problemas.

El problema está en las expresiones regulares.

Si yo en nsocio pongo "645", valida. Si pongo "asd", me salta una alerta diciéndome que deben ser números. Pero si pongo una combinación de letras y dígitos, por ejemplo "12d", no salta la alerta. Y lo mismo pasa con el resto de campos. ¿Qué es lo que falla en esa expresión regular?

Saludos y gracias

P.D.: Los paréntesis se supone que son elementos que memorizan caracteres. Por ejemplo, si pongo la expresión regular "/a(b)c/" debería coincidir con "abc" y memorizar "b", pero ¿eso qué significa?

P.P.D.: Se me olvidaba. Uso firefox 1.5 y XP. He probado también con Ópera 8 y nada.
 
Estado
Cerrado para nuevas respuestas
Arriba Pie