Foros del Web » Programando para Internet » Javascript »

habilitar /deshabilitar objetos de un form

Estas en el tema de habilitar /deshabilitar objetos de un form en el foro de Javascript en Foros del Web. hola, tengo un script que valida un dato ingresado en <input type="text" name="rut"> de un formulario inscripcion, el mismo <input type="text" name="rut"> se repito en ...
  #1 (permalink)  
Antiguo 28/02/2012, 09:02
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 6 meses
Puntos: 1
habilitar /deshabilitar objetos de un form

hola,
tengo un script que valida un dato ingresado en <input type="text" name="rut"> de un formulario inscripcion,

el mismo <input type="text" name="rut"> se repito en varios formularios que ademas de rut tienen otros objetos (select+text+option+button etc.etc)
la llamada al script en cada form lo hago asi:
Código PHP:
Ver original
  1. <head>
  2. <script language="javascript" src="include/funciones.js" type="text/javascript"></script>
  3. </head>
  4. <body>
  5.      <input name="cedula" type="text" id="cedula" onChange="check_cedula(this.form);" />
  6. .
  7. .
  8. .
  9. </body>
donde funciones tengo el script js que valida:

Código Javascript:
Ver original
  1. function check_cedula(form){
  2.     var cedula = form.cedula.value;
  3.     array = cedula.split( "" );
  4.     num = array.length;
  5.         if ( num == 10 ){
  6.             total = 0;
  7.             digito = (array[9]*1);
  8.             for( i=0; i < (num-1); i++ ){
  9.                 mult = 0;
  10.                 if ( ( i%2 ) != 0 ) {
  11.                     total = total + ( array[i] * 1 );
  12.                 }else{
  13.                     mult = array[i] * 2;
  14.                     if( mult > 9 ){
  15.                         total = total + ( mult - 9 );
  16.                     }else{
  17.                         total = total + mult;
  18.                     }
  19.                 }
  20.             }
  21.    
  22.         decena = total / 10;
  23.         decena = Math.floor( decena );
  24.         decena = ( decena + 1 ) * 10;
  25.         final = ( decena - total );
  26.         if (( final == 10 && digito == 0 ) || ( final == digito )) {
  27.             alert( "La c\xe9dula ES v\xe1lida!!!" );
  28.             return true;
  29.         }else{ 
  30.             alert( "La c\xe9dula NO es v\xe1lida!!!" );
  31.             return false;
  32.         }
  33.     }else{
  34.         alert("La c\xe9dula no puede tener menos de 10 d\xedgitos");
  35.         return false;
  36.     }
  37.     }

mi duda es como habilitar /deshabilitar los objetos (select+text+option+button etc.etc) del formulario cuando check_cedula se Valida.
  #2 (permalink)  
Antiguo 28/02/2012, 10:30
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: habilitar /deshabilitar objetos de un form

Hola.

Yo hago una función así:
Código:
function desactivar(elemento) {
	for(var i = 0; i < elemento.length; i++) {
		document.getElementById(elemento[i]).disabled = true;
	}
}
El parámetro elemento es un array que contiene el/los ID/s de el o los elementos que quiero desactivar. Por ejemplo, pude llamarse a esa función así:
Código:
desactivar('campo1', 'campo2');
Que desactivaría los elementos con los ID campo1 y campo2. Puedes añadir desde uno a tantos elementos como quieras. También puedes desactivarlos según su nombre de etiqueta en vez de su ID.

Un saludo.
  #3 (permalink)  
Antiguo 28/02/2012, 11:18
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: habilitar /deshabilitar objetos de un form

y la llamada a desactivar desde donde o en que evento , nose
  #4 (permalink)  
Antiguo 28/02/2012, 18:55
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: habilitar /deshabilitar objetos de un form

es correcta la forma de llamar ala funcion habilitar() mi intension es habilitar los text una vez que la funcion check_cedula() valide la cedula ingresada previamente


Código PHP:
Ver original
  1. <head>
  2. <script type="text/javascript">  
  3.  
  4.         function habilitar(elemento) {
  5.             for(var i = 0; i < elemento.length; i++) {
  6.                 document.getElementById(elemento[i]).disabled = false;
  7.             }
  8.         }
  9.        
  10.         function check_cedula(form){
  11.     var cedula = form.cedula.value;
  12.     array = cedula.split( "" );
  13.     num = array.length;
  14.         if ( num == 10 ){
  15.             total = 0;
  16.             digito = (array[9]*1);
  17.             for( i=0; i < (num-1); i++ ){
  18.                 mult = 0;
  19.                 if ( ( i%2 ) != 0 ) {
  20.                     total = total + ( array[i] * 1 );
  21.                 }else{
  22.                     mult = array[i] * 2;
  23.                     if( mult > 9 ){
  24.                         total = total + ( mult - 9 );
  25.                     }else{
  26.                         total = total + mult;
  27.                     }
  28.                 }
  29.             }
  30.    
  31.         decena = total / 10;
  32.         decena = Math.floor( decena );
  33.         decena = ( decena + 1 ) * 10;
  34.         final = ( decena - total );
  35.         if (( final == 10 && digito == 0 ) || ( final == digito )) {
  36.             alert( "La c\xe9dula ES v\xe1lida!!!" );
  37.             habilitar('cursos','asesor','nombres','adres');
  38.             return true;
  39.         }else{ 
  40.             alert( "La c\xe9dula NO es v\xe1lida!!!" );
  41.             return false;
  42.         }
  43.     }else{
  44.         alert("La c\xe9dula no puede tener menos de 10 d\xedgitos");
  45.         return false;
  46.     }
  47.     }
  48.  
  49.     </script>
  50. </head>
  51.  
  52. <body>
  53. <form id="form_a" name="form_a" method="post" action="">
  54.  
  55. <input name="cedula" type="text" id="cedula" size="10" maxlength="10" value="" onChange="check_cedula(this.form);" />
  56.  
  57. <input name="nombres" type="text" disabled="disabled" id="nombres" size="35" maxlength="35" />
  58. <input name="cursos" type="text" disabled="disabled" id="cursos" size="35" maxlength="35" />
  59. <input name="adres" type="text" disabled="disabled" id="adres" size="35" maxlength="35" />
  60. <input name="asesor" type="text" disabled="disabled" id="asesor" size="35" maxlength="35" />
  61. </form>
  62. </body>
  #5 (permalink)  
Antiguo 29/02/2012, 18:20
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: habilitar /deshabilitar objetos de un form

Es correcto, cuando se cumple la condición para que la cédula se considere válida llamas a la función habilitar() enviándole los elementos a habilitar como parámetro.
El código es casi el mismo que te di antes, sólo que ahora para habilitar los elementos la propiedad disabled de los mismos va a estar en false, las funciones quedarían así:
Código:
function habilitar(elemento) {
	for(var i = 0; i < elemento.length; i++) {
		document.getElementById(elemento[i]).disabled = false;
	}
}

function deshabilitar(elemento) {
	for(var i = 0; i < elemento.length; i++) {
		document.getElementById(elemento[i]).disabled = true;
	}
}
No olvides incluirlas en el código JavaScript de tu sitio.

Un saludo.
  #6 (permalink)  
Antiguo 01/03/2012, 07:47
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: habilitar /deshabilitar objetos de un form

segui tus indicaciones pero cuando ingreso el numero se cedula correcto los text no se habilitan
  #7 (permalink)  
Antiguo 01/03/2012, 20:53
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: habilitar /deshabilitar objetos de un form

En la parte que llamas a la función habilitar() prueba agregando la línea que hay a continuación y cambia los parámetros de la función por elemento, quedaría así:
Código:
var elemento = new Array('cursos','asesor','nombres','adres');
habilitar(elemento);
La implementación de la función que está arriba de todo tu código JS queda como está, sólo cambia la parte donde la llamas dentro de check_cedula(). Lo que te había dicho antes estaba mal porque estarías mandando varios parámetros de tipo string, cuando debes enviar un sólo array que contiene todos los IDs de los elementos a habilitar. Ahora debería funcionar.

Un saludo.
  #8 (permalink)  
Antiguo 02/03/2012, 07:26
(Desactivado)
 
Fecha de Ingreso: octubre-2011
Mensajes: 164
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: habilitar /deshabilitar objetos de un form

ok funciona bien ahora si los habilita, pero!
la funcion check_cedula tendria que copiarlo en el <head> de cada formulario para habilitar los ID de ese formulario

lo que queria es crear un archivo funciones.js y hacer la llamada en el <head> de cada formulario asi:
<script language="javascript" src="include/funciones.js" type="text/javascript"></script>

y dentro de funciones obviamene estarian las funciones check_cedula,habilitar,deshabilitar etc.
  #9 (permalink)  
Antiguo 02/03/2012, 23:22
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: habilitar /deshabilitar objetos de un form

Eso es lo recomendable, copias el código que ya tienes dentro del <head> y lo pones en un archivo de extensión .js (en tu caso en lacarpeta include por lo que veo) y lo incluyes los <head> así:
Código:
<script type="text/javascript" src="include/funciones.js"></script>
Luego en el código HTML cuando llames a las funciones el navegador las va a buscar dentro de ese fichero.
Saludos.

Etiquetas: deshabilitar, formulario, funcion, habilitar, input, js, objetos
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 11:42.