Foros del Web » Programando para Internet » PHP »

Habilitar submit si esta todo validado

Estas en el tema de Habilitar submit si esta todo validado en el foro de PHP en Foros del Web. Buenas gente, Recurro de nuevo a uds porque tengo un problema que nose como resolver. El tema es el siguiente, tengo una pagina donde importo ...

  #1 (permalink)  
Antiguo 27/11/2013, 12:45
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Habilitar submit si esta todo validado

Buenas gente,
Recurro de nuevo a uds porque tengo un problema que nose como resolver.
El tema es el siguiente, tengo una pagina donde importo un archivo pero antes lo imprimo en una tabla para ver si tiene errores, y los campos que tienen errores los marco con rojo para que el usuario los corrija, cuando hace la correccion se va el color rojo.
Luego tengo el submit para subir el archivo correcto, la cuestion es que quiero habilitar el submit cuando este todo OK, asi evito que me suban basura.
Este es el codigo donde valido e imprimo en los input
Código PHP:
Ver original
  1. <tr>
  2.                 <td><input type="text" name="<?php echo ("trab_apellido".$i);?>" id="<?php echo ("trab_apellido".$i);?>" value="<?php echo $apellido; ?>" style="border:0px; width: 80px;<?php if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$apellido))){ echo "border:2px solid #cc0000;";} ?>" onblur="valida_apellido(<?php echo $i; ?>); esconde(<?php echo $i; ?>);" ></td>
  3.                 <td><input type="text" name="<?php echo ("trab_nombre".$i); ?>" id="<?php echo ("trab_nombre".$i); ?>" value="<?php echo $nombre; ?>" style="border:0px; width: 80px;<?php if(!(preg_match("/^([a-z ñáéíóú ÑÁÉÍÓÚ ]{2,50})$/i",$nombre))){ echo "border:2px solid #cc0000;";} ?>" onblur="return valida_nombre(<?php echo $i; ?>);" /></td>
  4.                 <td><input type="text" name="<?php echo ("trab_cuil".$i); ?>" id="<?php echo ("trab_cuil".$i); ?>" value="<?php echo $cuil; ?>" style="border:0px; width: 80px;<?php if(!cuitValido($cuil)){ echo "border:2px solid #cc0000;";}?>" onblur="return valida_cuil(<?php echo $i; ?>);" /></td>
  5.                 <td><input type="text" name="<?php echo ("trab_basico".$i); ?>" id="<?php echo ("trab_basico".$i); ?>" value="<?php echo $basico; ?>" style="border:0px; width: 80px; text-align:right;<?php if(!is_numeric($basico)){ echo "border:2px solid #cc0000;";} ?>" onblur="return valida_basico(<?php echo $i; ?>);"/></td>
  6.                 <td><input type="text" name="<?php echo ("trab_bruto".$i); ?>" id="<?php echo ("trab_bruto".$i); ?>" value="<?php echo $bruto; ?>" style="border:0px; width: 80px; text-align:right;<?php if(!is_numeric($bruto)){ echo "border:2px solid #cc0000;";} ?>" onblur="return valida_bruto(<?php echo $i; ?>);"/></td>
  7.                 <td><input type="text" name="<?php echo ("trab_afiliado".$i); ?>" id="<?php echo ("trab_afiliado".$i); ?>" value="<?php echo $afili; ?>" style="border:0px; width: 50px; text-align:center;<?php if(trim((string)$afili) !== "0" && trim((string)$afili) !== "1"){ echo "border:2px solid #cc0000;";} ?>" onblur="return valida_afiliado(<?php echo $i; ?>);" maxlength="1"/></td>
  8.               </tr>
Lo que nose hacer es que si esta todo bien me habilite el submit.
Espero me haya explicado y me puedan ayudar.

Gracias
__________________
Nico...
  #2 (permalink)  
Antiguo 27/11/2013, 12:51
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Habilitar submit si esta todo validado

Eso lo puedes hacer con JavaScript
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 27/11/2013, 12:52
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Acá tenes un ejemplo

http://www.es.hscripts.com/scripts/j...3n-enviar.html

Saludos
  #4 (permalink)  
Antiguo 27/11/2013, 12:53
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Obviamente tenes que adaptarlo a la forma que necesites.

Saludos
  #5 (permalink)  
Antiguo 27/11/2013, 12:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Habilitar submit si esta todo validado

Amigo martin, no hagas doble post que para eso existe el boton Editar
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #6 (permalink)  
Antiguo 27/11/2013, 13:00
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Una pregunta xSkArx, en donde esta el botón, no lo encuentro.

Gracias
  #7 (permalink)  
Antiguo 27/11/2013, 14:34
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Bueno, estoy intentando con esta funcion pero tengo un problema.
Código Javascript:
Ver original
  1. <script>
  2. function desactivo_submit()
  3. {
  4.     var x = document.forms["form"].elements;
  5.     var desactivar = true;
  6.  
  7.     for (var i = 0; i < x.length; i++) {
  8.         if (x[i].value.length == 0) desactivar = false;
  9.     }
  10.  
  11.     if (desactivar) {
  12.         document.getElementById('submit').disabled = false;
  13.     }
  14.     else {
  15.         document.getElementById('submit').disabled = 'disabled';
  16.     }
  17. }
  18. </script>
Mi problema esta aca
Código Javascript:
Ver original
  1. if (x[i].value.length == 0) desactivar = false;
Ahi le estoy diciendo que si esta vacio que desactive el submit.
Pero no le encuentro la vuelta para ponerle las validaciones que tengo mas arriba.
No me funcionan de ninguna manera.
__________________
Nico...
  #8 (permalink)  
Antiguo 27/11/2013, 15:18
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Habilitar submit si esta todo validado

en vez de poner == 0 ponle == ''
son dos comillas simples por si acaso lo lees como una doble

con eso lo que interpreta es una cadena vacia, pero con == 0 interpreta como false
  #9 (permalink)  
Antiguo 28/11/2013, 06:53
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Claro, pero ponerle las comillas es lo mismo que el 0.
Como hago para ponerle la expresion regular que esta mas arriba? O si quiero que sea solo numero?
__________________
Nico...
  #10 (permalink)  
Antiguo 28/11/2013, 06:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Capaz esta función te sirve para saber si es numérico:

Un ejemplo sería:

isNaN(123) devolverá False

isNaN("prueba") devolverá True

Saludos
  #11 (permalink)  
Antiguo 28/11/2013, 08:43
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Bueno, logre hacerlo asi, pero me funciona a medias.
Cuando importo el archivo, si hay algun error pinto el borde de rojo, entonces hice una funcion que si el borde es rojo me desactive el submit, hasta ahi todo bien.
El tema es cuando no hay ningun error, el submit aparece deshabilitado.
Como puedo corregir eso?
Esta es la funcion.
Código Javascript:
Ver original
  1. <script>
  2. function desactivo_submit()
  3. {
  4.     var x = document.forms["formulario"].elements;
  5.     var desactivar = true;
  6.  
  7.     for (var i = 0; i < x.length; i++) {
  8.         if (x[i].style.display == "border:2px solid #cc0000;") desactivar = false;
  9.     }
  10.  
  11.     if (desactivar) {
  12.         document.getElementById('guardar').disabled = false;
  13.     }
  14.     else {
  15.         document.getElementById('guardar').disabled = 'disabled';
  16.     }
  17. }
  18. </script>
  19. Muchas gracias
__________________
Nico...
  #12 (permalink)  
Antiguo 28/11/2013, 08:48
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Y así?.

Código Javascript:
Ver original
  1. <script>
  2. function desactivo_submit()
  3. {
  4.     var x = document.forms["formulario"].elements;
  5.     var desactivar = true;
  6.  
  7.     for (var i = 0; i < x.length; i++) {
  8.         if (x[i].style.display == "border:2px solid #cc0000;") desactivar = false;
  9.     }
  10.  
  11.     if (desactivar) {
  12.         document.getElementById('guardar').disabled = false;
  13.     }
  14.     else {
  15.         document.getElementById('guardar').disabled = true;
  16.     }
  17. }
  18. </script>
  #13 (permalink)  
Antiguo 28/11/2013, 08:55
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

No, pero esta igual el script
__________________
Nico...
  #14 (permalink)  
Antiguo 28/11/2013, 08:56
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

No hay una diferencia mira:

if (desactivar) {
document.getElementById('guardar').disabled = false;
}
else {
document.getElementById('guardar').disabled = true;
}

Fijate que te hice un ejemplo tonto

Código Javascript:
Ver original
  1. <html>
  2.  
  3. <head>
  4.  
  5. <script>
  6.  
  7. function si(desactivar){
  8.     if (desactivar){
  9.     document.getElementById('bt1').disabled = false;
  10.     }else{
  11.         document.getElementById('bt1').disabled = true;
  12.     }
  13. }
  14.    
  15.  
  16. </script>
  17. </head>
  18.  
  19. <body>
  20.  
  21. <input type='button' id='bt1' value= 'Hola'>
  22.  
  23. <input type='button' id='bt2' onclick="si(false);" value= 'Hola2'>
  24. <input type='button' id='bt2' onclick="si(true);" value= 'Hola3'>
  25.  
  26. </body>
  27.  
  28. </html>

Saludos
  #15 (permalink)  
Antiguo 28/11/2013, 09:01
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Ah perdon, no lo habia notado.
Pero no funciona tampoco
__________________
Nico...
  #16 (permalink)  
Antiguo 28/11/2013, 09:02
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Que valor tiene la variable

Desactivar antes de entrar al if

if (desactivar) {

??
  #17 (permalink)  
Antiguo 28/11/2013, 09:07
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

La inicio en True
__________________
Nico...
  #18 (permalink)  
Antiguo 28/11/2013, 09:13
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Si veo que la inicias en true, pero después en el form puede tomar el valor desactivar = false.

Antes del if seguro que devuelve true?.

Otra cosa que note, el boton como se llama

submit o guardar?.

Saludos
  #19 (permalink)  
Antiguo 28/11/2013, 09:26
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

El boton tiene el id y name "guardar".
Como hago para ver el valor de desactivar? Esta var_dump pero en javascript?
__________________
Nico...
  #20 (permalink)  
Antiguo 28/11/2013, 10:06
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Si, el valor es true.
Pude chequearlo con un alert, devuelve true antes del if que me decis
__________________
Nico...
  #21 (permalink)  
Antiguo 28/11/2013, 10:21
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Ok buenísimo.

Mostrame el html del botón por favor.
  #22 (permalink)  
Antiguo 28/11/2013, 11:16
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Código HTML:
Ver original
  1. <input type='submit' name="guardar" id='guardar' value='Guardar datos' class='boton' onclick='saltar();' disabled="disabled"/>
__________________
Nico...
  #23 (permalink)  
Antiguo 28/11/2013, 11:43
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Amigo Nico0601 esa función nunca se iba a ejecutar si el botón esta deshabilitado, como ibas a hacer click?.

Lo que se me ocurre es que valides los campos que no estén vacíos y luego habilitas el botón:

Se me ocurre este ejemplo:

Código Javascript:
Ver original
  1. <html>
  2.  
  3. <head>
  4.  
  5. <script>
  6.  
  7. function desactivo_submit(){
  8.  
  9.    var x = document.forms["formulario"].elements;
  10.     var desactivar = true;
  11.  
  12.     var uno = document.getElementById('txt1').value;
  13.     var dos = document.getElementById('txt2').value;   
  14.    
  15.     if (uno != '' && dos != '') {
  16.         document.getElementById('guardar').disabled = false;
  17.     }
  18.     else {
  19.         document.getElementById('guardar').disabled = true;
  20.     }
  21. }
  22.  
  23.  
  24. </script>
  25. </head>
  26.  
  27. <body>
  28.  
  29. <form id='formulario' action='' >
  30. <input type='text' id='txt1' onchange='desactivo_submit();' />
  31. <input type='text' id='txt2' onchange='desactivo_submit();' />
  32. <br>
  33. <input type='button' id='guardar' disabled="disabled" value= 'Hola'>
  34. </form>
  35.  
  36. </body>
  37.  
  38. </html>

Utilizo el onchange para ver verificar si tienen datos los campos.

No se si te sirve, es lo que se me ocurre.

Saludos
  #24 (permalink)  
Antiguo 28/11/2013, 11:52
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Claro, pero en ese caso, me serviria unicamente si el archivo a importar tiene dos registros, no?
Porque en mi caso puede tener 1 o 500, tendria que agregar tantos input como registros haya en el archivo, no? Es asi?
__________________
Nico...
  #25 (permalink)  
Antiguo 28/11/2013, 12:00
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Pense que tenías valores fijos.

Necesitas algo así entonces:

Código Javascript:
Ver original
  1. <html>
  2.  
  3. <head>
  4.  
  5. <script>
  6.  
  7. function desactivo_submit(){
  8.  
  9.     var frm = document.getElementById("formulario");
  10.     var desactivar = true;
  11.  
  12.     for (i=0;i<frm.elements.length;i++)
  13.     {
  14.         if (frm.elements[i].value == ''){
  15.             desactivar = false;
  16.         }
  17.     }
  18.        
  19.    
  20.     if (desactivar) {
  21.         document.getElementById('guardar').disabled = false;
  22.     }
  23.     else {
  24.         document.getElementById('guardar').disabled = true;
  25.     }
  26. }
  27.  
  28.  
  29. </script>
  30. </head>
  31.  
  32. <body>
  33.  
  34. <form id='formulario' action='' >
  35. <input type='text' id='txt1' onchange='desactivo_submit();' />
  36. <input type='text' id='txt2' onchange='desactivo_submit();' />
  37. <br>
  38. <input type='button' id='guardar' disabled="disabled" value= 'Hola'>
  39. </form>
  40.  
  41. </body>
  42.  
  43. </html>
  #26 (permalink)  
Antiguo 28/11/2013, 12:17
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Sigue igual que antes, el problema lo tengo cuando estan todos los campos correctos.
Si hay algun error los marco con rojo y al correjirlos se me habilita el submit.
__________________
Nico...
  #27 (permalink)  
Antiguo 28/11/2013, 12:21
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

A ver si entiendo.. vos vas cargando los campos y no se te habilita?.

Ahora si vos tenes algún error y lo modificas se habilita bien.

Le pusiste el onchange no?. Es decir todos los input tienen el onchange.

Saludos
  #28 (permalink)  
Antiguo 28/11/2013, 12:23
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

Pensando un poco en vos alta, viste donde le pongo que si es rojo desactive el submit.
Se le puede agregar otro if
Código Javascript:
Ver original
  1. for (var i = 0; i < x.length; i++) {
  2.         if (x[i].style.display == "border:2px solid #cc0000;") desactivar = false;
  3.     }......
Que diga si el borde es blanco se active? O algo asi, que color tiene por defecto
Por ahi es una burrada! ja! pero se me ocurrio
__________________
Nico...
  #29 (permalink)  
Antiguo 28/11/2013, 12:27
Avatar de Nico0601  
Fecha de Ingreso: diciembre-2012
Ubicación: Buenos Aires, Zona Sur
Mensajes: 134
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Habilitar submit si esta todo validado

El tema es asi,
Tengo un form donde solo selecciono el archivo a importar y lo imprimo en php validandolo para que el usuario veo lo que sube y me marque con rojo los errores que tiene.
Al corregirlos se le va el color rojo y cuando estan todos los campos bien se activa el submit.
El problema esta cuando el archivo a importar no tiene ningun error.
__________________
Nico...
  #30 (permalink)  
Antiguo 28/11/2013, 12:28
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: Habilitar submit si esta todo validado

Mira yo no lo manejaría por estilos, sino por valor.

Es decir si el value == '' ahí le cambió el color. Sino se lo saco.

Algo así:

Código Javascript:
Ver original
  1. for (var i = 0; i < x.length; i++) {
  2.         if (x[i].value == ''){
  3.             desactivar = false;
  4.              x[i].style.display == "border:2px solid #cc0000;";
  5.         }else{
  6.              x[i].style.display == '';
  7.         }
  8.     }

Saludos

Etiquetas: habilitar, submit, tabla, todo
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 15:41.