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
Trackbacks / Pingbacks
4 Comentarios
Deja un comentario
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)
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)
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)
Gracias por el aporte! esta manera también está muy bien!
Escrito el 22/09/08 a las 13:51:06 (#4) ( responder)