Elemento Check de un formulario para habilitar/deshabilitar un campo

Han llegado algunas personas buscando cómo habilitar o deshabilitar un elemento de un formulario mediante el uso del elemento check de html.

Voy a explicar de forma muy sencilla como podemos llevar a cabo esta operación utilizando html y javascript.

Lo primero que haremos será crearnos nuestro check button y el campo a habilitar/deshabilitar con las siguientes instrucciones

<input type="checkbox"  name="ch" id="ch" onclick="modificarEstado()">
<input type="text" id="cantidad" name="cantidad" style="width: 30px" >

Con esto, lo único que haremos será decirle que cuando sea pulsado o despulsado el check, es decir, que aparezca o no el tick ejecute la función javascript “modificarEstado()”

Ahora tendremos que hacer la función que habilite o deshabilite el campo cantidad, en función de lo que esté seleccionado en el check.

Para ello haremos uso de las propiedad checked del check y la propiedad disabled del cajetín de texto de la siguiente manera

function modificarEstado(){
	if(document.getElementById("ch").checked)
		document.getElementById("cantidad").disabled =false;
	else
		document.getElementById("cantidad").disabled=true;
}

Por lógica, si el check estará inicialmente sin seleccionar, deberemos cargar en el onLoad() de la página el estado correcto del cajetín.

Asociar texto a un checkbox

Si queremos acompañar al checkbox con un texto explicativo, bastará con insertar lo que deseemos justo después del check, pero si además queremos que al pulsar ese texto también se modifique el valor del checkbox tendremos que asociarle a ambos un mismo label, veamos un ejemplo

<label><input type="checkbox"  name="ch" id="ch" onclick="modificarEstado()">  Añadir cantidad </label>

De esta manera, cuando pulsemos en el check y cuando lo hagamos sobre “Añadir cantidad” se habilitará o deshabilitará el cajetín del texto tal cual lo habíamos programado antes.


Comparte este artículo

rss delicious meneame technorati webeame bitacoras enchilame fresqui google reddit

Temas relacionados


 

Trackbacks / Pingbacks


4 Comentarios

Deja un comentario


Autor    Ayoze dice:

Una recomendación que hará a la función modificarEstado más sencilla:

function modificarEstado(){
document.getElementById(”cantidad”).disabled = !(document.getElementById(”ch”).checked);
}

Y, además, podría hacerse una función un poco más genérica, que reciba el nombre del elemento a habilitar/desahibilitar:

function modificarEstado(obj){
document.getElementById(obj).disabled = !(document.getElementById(”ch”).checked);
}

Un saludo,

Ayoze

Escrito el 12/03/08 a las 12:52:44 (#1) ( responder)

Autor    Emilio dice:

Hola Ayoze, si, la función se puede mejorar mucho más, he intentado hacerlo lo más simple posible para que se coja la idea.

Gracias por la aportación ;)

Escrito el 12/03/08 a las 13:45:41 (#2) ( responder)

Autor    ScriptShow dice:

Una forma sencilla de optener el mismo resultado y, compatible con los olvidados navegadores clásicos.

Poner entre de las etiquetas del formulario algo así:

<form>

<input type=”checkbox” name=”ch” onclick=”if(this.checked==true)this.form.cantidad.disabled=true;else this.form.cantidad.disabled=false”>

<input type=”text” name=”cantidad” style=”width: 30px”>

</form>

Nos ahorramos el script, la función, etc. y lo hacemos universalmente compatible.

Escrito el 22/09/08 a las 11:08:47 (#3) ( responder)

Autor    Emilio dice:

Gracias por el aporte! esta manera también está muy bien!

Escrito el 22/09/08 a las 13:51:06 (#4) ( responder)

Deja un comentario

Normas de uso
  • No insultes
  • Escribe sin faltas de ortografía
  • Si vas a contestar a alquien, utiliza el botón responder, se le avisará