Foros del Web » Programando para Internet » Javascript »

No validar campo DISABLED

Estas en el tema de No validar campo DISABLED en el foro de Javascript en Foros del Web. Hola me surgio una cuestio que tengo que enviarun valor que puede venir de dos inputs distintos, los imputs estan desactivados y dependiendo de un ...
  #1 (permalink)  
Antiguo 16/12/2009, 18:06
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Pregunta No validar campo DISABLED

Hola me surgio una cuestio que tengo que enviarun valor que puede venir de dos inputs distintos, los imputs estan desactivados y dependiendo de un checkbox se activa uno o se activa el otro.

la dinamica es parecida a un input de radio, solo que estos son campos de texto y su valor es asignado por el usuario, por eso la necesidad que sean de texto, pero quiero validar que el valor que introdusca el usuario, corresponda con el formato indicado y para eso necesito validarlo.

Ahora la pregunta, como valido los campos y que me pase por alto el input que se encuentra disabled?
  #2 (permalink)  
Antiguo 16/12/2009, 18:37
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No validar campo DISABLED

tendras que primero verificar el estado antes de validarlo.
Código:
// asumiendo que input es la referencia a un campo de texto;
if(!input.disabled){
// valida el campo input segun tu criterio;
}
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 16/12/2009, 19:42
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No validar campo DISABLED

Hola de nuevo zerokilled, gracias era la respuesta que necesitaba, lo voy a intentar.

ahora una nueva consulta referente a estos dos campos.

como hago para unir los dos dos campos en una sola variable de javascript pata despues poderlo enviar a un php?

lo que me imagino seria algo asi.

Código Javascript:
Ver original
  1. var valor=document.getElementById("valor1").value + document.getElementById("valor2").value;
  #4 (permalink)  
Antiguo 16/12/2009, 19:53
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No validar campo DISABLED

es una forma aunque necesitas de algun separador para que puedas deconstruirlo en php con un split. puede ser un simple caracter que no deba utilizarse en los valores. ahora bien, el tema de enviarlo requiere que dicho valor este presente en algun campo para que el formulario pueda construir el query y enviarlo al servidor. por ejemplo, pudieras tener un campo hidden dentro del formulario y luego le asignas el valor antes del envio de este. sin embargo, en mi opinion, me parece ridiculo. si los campos que utilizas para unir los valores van a ser enviados al formulario, ¿por qué queras enviar otro campo con ambos valores unidos? o sea, desde el servidor puedes unirlo. a no ser que dichos cambos no forman parte del formulario. ese detalle lo sabras tu.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 17/12/2009, 12:46
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No validar campo DISABLED

Ok, ya lo intente pero tengo un problema con el if anidado, resulta que me valida lo que quiero pero... si el valor es correcto no sigue corriendo el codigo, ya intente con break; pero me mandaba error, haber si me puedes echar una mano para terminar la validacion, gracias.

Código Javascript:
Ver original
  1. ...
  2. } else if(!document.getElementById("FV1").disabled){
  3.     if(!validaMoneda(cantidad1)){
  4.         mensaje.innerHTML="La cantidad ingresada no coincide con el formato moneda.";
  5.     } else {return false;}
  6. } else if(!document.getElementById("FV2").disabled){
  7.     if(!validaMoneda(cantidad2)){
  8.         mensaje.innerHTML="La cantidad ingresada no coincide con el formato moneda.";
  9.     } else {return false;}
  10. } else { ...
  #6 (permalink)  
Antiguo 17/12/2009, 13:16
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No validar campo DISABLED

creo que deberia ser asi,
Código:
      ...
      if(!document.getElementById("FV1").disabled){
          if(!validaMoneda(cantidad1)){
              mensaje.innerHTML="La cantidad ingresada no coincide con el formato moneda.";
          return false;
          }
      }
      if(!document.getElementById("FV2").disabled){
          if(!validaMoneda(cantidad2)){
              mensaje.innerHTML="La cantidad ingresada no coincide con el formato moneda.";
return false;
          }
      } 
      if ...
fijate que no dice else if. si la estructura la haces else if corres el riesgo de que el resto no se valide cuando no esta inhabilitado. por otro lado, supongo que queras devolver false cuando el valor no coincide tu criterio. por tanto, la estructura if/else no es la correcta.

ahora bien, la estructura anterior la puedes reducir con el operador logico AND (&&). por ejemplo,
Código:
      if(!document.getElementById("FV1").disabled && !validaMoneda(cantidad1)){
      mensaje.innerHTML="La cantidad ingresada no coincide con el formato moneda.";
      return false;
      }
asi sucecivamente con el resto de los IF.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 17/12/2009, 13:37
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No validar campo DISABLED

Hola de nuevo, ya intente pero aun sigo sin avanzar y tambien trate dejandando puros if como en tu ejemplo, pues no em valida nada y se sugue de largo.

mira lo que pasa es que se validan varios campos uno a la vez este es el bloque de codigo completo:

Código Javascript:
Ver original
  1. if(!validaFecha(fecha)){
  2.         divMensaje.innerHTML="<img src='../img/denied.gif'> Se necesita ingresar la fecha.";
  3.     } else if(!validaMatricula(matricula)){
  4.         divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no coincide con el formato.";
  5.     } else if(document.getElementById("txtNombre_I").value==''){
  6.         divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no esta registrada en sistema o no fue seleccionada de la lista de opciones.";
  7.     } else if(!document.getElementById("FV1").disabled){
  8.         if(!validaMoneda(cantidad1)){
  9.             divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
  10.         } else {return true;}
  11.     } else if(!document.getElementById("FV2").disabled){
  12.         if(!validaMoneda(cantidad2)){
  13.             divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
  14.         } else {return true;}
  15.     } else
  16.     {  .. funciones que envian datos a php...

hasta aqui lo que hace es verificar que campo esta habilitado y a ese campo le verifica que la cantidad corresponda, lo hace como se deve pero despues de eso se queda ahi ya no avanza, lo que necesito es como me salto al ultimo else..
  #8 (permalink)  
Antiguo 17/12/2009, 16:15
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No validar campo DISABLED

disculpame, estoy muy distraido o no entiendo bien lo que quieres lograr. tendras que expresarlo de otra manera o colocando el codigo completo, y en las partes que no sabes como va el codigo, incluye comentarios acerca de lo que necesitas.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 17/12/2009, 16:26
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No validar campo DISABLED

Ese es todo el bloque de codigo con el que estoy trabajando ahorita, lo que pasa es que el codigo verifica bien los datos.

segui tu consejo, primero verifique que el campo no sea nulo, y si no es nulo verifica que el valor sea acorde con el formato en el que deve de estar, los campos se activan mediante un grupo de radiobotones, almomento que se selecciona un boton se activa el campo de texto y se limpia y desactiva el otro y viceversa.

por eso decia que la dinamica era parecida a los botones de radio.. bueno el punto es que ya que verifica que campo no esta disabled y que contenga el dato igual que el formato establecido, entonces deveria seguir al ultimo else, pero no lo hace, se queda ahi mismo.

lo que necesito es saber como me salto al siguiente else, con algun break o algo, para que sigan las funciones siguientes.

saludos.

ah disculpa que no ponga todo el codigo es que son muchas lineas
  #10 (permalink)  
Antiguo 17/12/2009, 17:36
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: No validar campo DISABLED

lo que estoy entendiendo es que cuando todos los datos son validos, el codigo se detiene aunque no se haya validado el resto. se detiene especificamente en el siguiente punto.
Código:

if(!validaFecha(fecha)){
divMensaje.innerHTML="<img src='../img/denied.gif'> Se necesita ingresar la fecha.";
} else if(!validaMatricula(matricula)){
divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no coincide con el formato.";
} else if(document.getElementById("txtNombre_I").value==''){
divMensaje.innerHTML="<img src='../img/denied.gif'> La matricula no esta registrada en sistema o no fue seleccionada de la lista de opciones.";
} else if(!document.getElementById("FV1").disabled){
	if(!validaMoneda(cantidad1)){
	divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
	} else {return true;}
} else if(!document.getElementById("FV2").disabled){
	if(!validaMoneda(cantidad2)){
	divMensaje.innerHTML="<img src='../img/denied.gif'> La cantidad ingresada no coincide con el formato moneda.";
	} else {return true;}
} else{
.. funciones que envian datos a php...
} 
la razon es por la porcion en verde. ¿que exactamente pretendes hacer con el return true? tal como lo tienes significa "si el formato es valido, devuelve true". al invocar return, el resto no se analiza porque le estas indicando al interprete que debe salir de la funcion devolviendo un valor. lo mismo sucede con el IF que le sigue.

nunca se me habia ocurrido usar break sin bucles. si lo intentas, el interprete te indica que un break sin label solo puede estar contenido dentro de un bucle o switch. lo intente con label pero parece que tiene una forma muy rigida su uso. de todos modos, de momento no creo que un break te solucione. sigo investigando esta parte.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #11 (permalink)  
Antiguo 17/12/2009, 17:51
Avatar de tampon  
Fecha de Ingreso: julio-2009
Mensajes: 420
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: No validar campo DISABLED

Pues muchas gracias, y si exactamente eso es lo que pasa.

saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:51.