Esta semana me enfrente a la necesidad de poner un control checkbox en HTML que no pudiera ser cambiado por el usuario. Inicialmente pensé que era fácil ya que supuse que al usar el atributo readonly este funcionaria como lo esperaba; más no fue así.
Veamos lo que pasa al poner el atributo a un campo del tipo text:
[sourcecode language=’html’]
[/sourcecode]
Campo:
El atributo readonly actúa para que no podamos editar su contenido, ademas de ser tenido en cuenta al momento del envio a diferencia del atributo disabled en el que será excluido al enviar el formulario. Ahora veamos que efecto tiene el atributo readonly sobre un campo de tipo checkbox:
[sourcecode language=’html’]
[/sourcecode]
Checkbox:
readonly no tiene ningún efecto sobre este tipo de campo. Para solucionar esto tendremos que acudir al javascript así:
[sourcecode language=’html’]
[/sourcecode]
Checkbox:
O si queremos una solución más elegante que no ensucie nuestro código HTML con Javascript, a través de jQuery podemos implementar la siguiente función:
[sourcecode language=»js»]
$(document).ready(function(){
$(‘:checkbox[readonly=readonly]’).click(function(){
return false;
});
});
[/sourcecode]
Es justo lo que andaba buscando, gracias por la info. Un saludo.
Super!!!
Buena pana
Justo lo que buscaba, era un momento de histeria si que ocupe la primera opción ya que necesitaban una solución rápida.
Saludos
Otra forma podría ser, para no hacer uso de javaScript, poner disabled al checkbox y colocar a continuación un input type=»hidden» con el mismo name y value. Con esto el checkbox queda «intocable» y el valor (en caso de que esté tildado y se quiera recuperar) pasa por el POST a través del hidden.
muchas gracias..!! justo algo como esto buscaba eres un capo..!
Gracias por compartir tus conocimientos! DTB
esto tiene un problema si el campo esta desactivado por defecto y no queremos que pueda ser editable no funciona.