Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2008, 00:50
Avatar de Mikimoto74
Mikimoto74
 
Fecha de Ingreso: enero-2005
Mensajes: 88
Antigüedad: 19 años, 10 meses
Puntos: 2
Exclamación No funciona bien esta validación de formulario

A ver si alguien puede ayudarme a sacar en claro esto. Se trata de un formulario muy simple, el cuál intento validar en dos partes, la primera para validar un máximo/mínimo de caracteres en campos de texto, y la segunda, que aún no he hecho, para una validación más exhaustiva.

Lo que pasa es lo siguiente: cuando no introduzco nada, me salen todos los mensajes de error (en este caso dos), pero al hacer clic en enviar, este botón se convierte momentáneamente en campo de texto (si copiais y ejecutais el código de abajo lo comprobareis). Y lo peor es que cuando introduzco un valor válido en el primer campo, no aparece el mensaje de error para el segundo campo, y cuando hago lo mismo solo con el segundo campo, aparece el mensaje de error para ambos. Todo esto en Firefox.

El código:

Código HTML:
<html>
<head>
<title>Untitled Document</title>

<script type="text/javascript">
   /* código javascript abajo */
</script>

</head>

<body>
<form id="form1" name="formulario" method="post" action="#" onSubmit="return validate(this)">
  <table width="200" border="1">
    <tr>
      <td>cadena</td>
      <td><input type="text" name="cadena1" id="cadena1" /></td>
    </tr>
    <tr>
      <td>alfanumerico</td>
      <td><input type="text" name="alfanumerico1" id="alfanumerico1" /></td>
    </tr>
  </table>
  <br />
  <label>
  <input type="submit" name="enviar" id="enviar" value="Enviar"/>
  </label>
</form>
</body>
</html> 

Código javascript:
Código PHP:
var error_message ""

function check_input(miFormfield_valuemin_field_sizemax_field_sizetipomessage) {
    
// Validación de máximos y mínimos
    
if (field_value == '' || field_value.length min_field_size || field_value.length max_field_size) {
          
error true;
    }
    
    
// Validación de tipo de entrada
    /* ...... acciones para esta validación ....*/
    
    
if (error) {
        
error_message error_message "* " message "\n";
    }
}

function 
validate(miForm) {
    
    for (
i=0miForm.elements.lengthi++) {
        if (
miForm.elements[i].type "textfield") {
            switch (
miForm.elements[i].name) {
                case 
"cadena1"check_input(miFormmiForm.cadena1.value510"cadena""El campo cadena debe tener entre 5 y 10 caracteres\n")
                break;
                case 
"alfanumerico1"check_input(miFormmiForm.alfanumerico1.value520"alfanumerico""El campo alfanumerico debe tener entre 5 y 20 caracteres\n")
            }
        }
    }
    
alert (error_message)
    return 
true