Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/09/2008, 11:11
Avatar de webbeginner
webbeginner
 
Fecha de Ingreso: noviembre-2004
Mensajes: 241
Antigüedad: 20 años, 4 meses
Puntos: 2
Respuesta: Como modificar una validación en un form dependiendo si el elemento esta h

Cita:
Iniciado por David el Grande Ver Mensaje
Primero, hay un error en tu código, ya que estás usando el evento onclick para habilitar/deshabilitar los input pero sin comprobar que el radio en cuestión esté seleccionado (checked) o no.

Segundo, para validar solo si están habilitados puedes poner una condicional:
Código javascript:
Ver original
  1. if (!elemento.disabled) { /* Validar */ }
Gracias por responder David el Grande !!!

Sobre tu primer observación no lo hice porque no se como hacerlo comoprobando el radio

sobre tu segunda observación no se si tenga que poner algo mas ademas de la linea que escribes, la coloque justo antes de la validación tal como lo muestro en mi codigo, pero deshabilita la validación para todos los casos.

Mi codigo:

Código:
<html>
<head>
    <title>Ejemplo de validación de un formulario</title>
    
<script>
     
function validarEntero(valor){ 
      //intento convertir a entero. 
     //si era un entero no le afecta, si no lo era lo intenta convertir 
     valor = parseInt(valor) 

      //Compruebo si es un valor numérico 
      if (isNaN(valor)) { 
            //entonces (no es numero) devuelvo el valor cadena vacia 
            return "" 
      }else{ 
            //En caso contrario (Si era un número) devuelvo el valor 
            return valor 
      } 
} 

function valida_envia(){
 if (!nombre.disabled) {
    //valido el nombre
    if (document.fvalida.nombre.value.length==0){
        alert("Tiene que escribir su nombre")
        document.fvalida.nombre.focus()
        return 0;
    }
	}
    
    //valido la edad. tiene que ser entero mayor que 18
    edad = document.fvalida.edad.value
    edad = validarEntero(edad)
    document.fvalida.edad.value=edad
    if (edad==""){
        alert("Tiene que introducir un número entero en su edad.")
        document.fvalida.edad.focus()
        return 0;
    }else{
        if (edad<18){
            alert("Debe ser mayor de 18 años.")
            document.fvalida.edad.focus()
            return 0;
        }
    }
    
    //valido el interés
    if (document.fvalida.interes.selectedIndex==0){
        alert("Debe seleccionar un motivo de su contacto.")
        document.fvalida.interes.focus()
        return 0;
    }
    
    //el formulario se envia
    alert("Muchas gracias por enviar el formulario");
    document.fvalida.submit();
}
</script>
</head>

<body>

<form name="fvalida">
<table>
<tr>
  <td>¿Tiene Registro?</td>
  <td><p>
    <label>
      <input name="GrupoOpciones1" type="radio" id="GrupoOpciones1_0" onClick="document.getElementById('nombre').disabled=false;document.getElementById('edad').disabled=false;" value="Si"/>
      Si</label>
    <br>
    <label>
      <input name="GrupoOpciones1" type="radio" id="GrupoOpciones1_1" onClick="document.getElementById('nombre').disabled=true;document.getElementById('edad').disabled=true;" value="No"/>
      No</label>
    <br>
  </p></td>
</tr>
<tr>

    <td>Nombre: </td>
    <td><input type="text" name="nombre" size="30" maxlength="100" id= "nombre" ></td>
</tr>
<tr>
    <td>Edad: </td>
    <td><input type="text" name="edad" size="3" maxlength="2" id="edad" ></td>
</tr>
<tr>
    <td>Interés:</td>

    <td>
    <select name=interes>
    <option value="Elegir">Elegir
    <option value="Comercial">Contacto comercial
    <option value="Clientes">Atención al cliente
    <option value="Proveedores">Contacto de proveedores
    </select>    </td>
</tr>
<tr>
    <td colspan="2" align="center"><input type="button" value="Enviar" onClick="valida_envia()"></td>
</tr>
</table>

</form>




</body>
</html>
tambien lo intenté así
Código:
 if (!elements.disabled) {
    //valido el nombre
    if (document.fvalida.nombre.value.length==0){
	
        alert("Tiene que escribir su nombre")
        document.fvalida.nombre.focus()
        return 0;
    }
	}
Pero me dice que "elements" no esta definido :(

Me podrias explicar un poquito mas?

Gracias
__________________
************************
"La bondad es simple; la maldad, múltiple"

Última edición por webbeginner; 22/09/2008 a las 11:17