Contenido

Solución a los problemas de multiples botones en IE6

30 Jun

+ 0

Hace más de un año, preguntabamos ¿Por que lo llamamos input cuando deberíamos llamarlo button?. Despues de varios comentarios vimos que uno de los problemas que nos llevan a depender de input's para hacer el trabajo de buttons es que Internet Explorer 6, al enviar todos los datos a la página siguiente hace exactamente eso, enviarlo todo, incluso otros elementos <button /> que podrían tener diferentes funcionalidades.

Para solucionar este problema, podemos optar por usar este código javascript únicamente para Internet Explorer 6.

function buttonfix() {
    var buttons = document.getElementsByTagName('button');
    for (var i=0; i<buttons.length; i++) {
        if(buttons[i].onclick) continue;
        
        buttons[i].onclick = function () {
            for(j=0; j<this.form.elements.length; j++)
                if( this.form.elements[j].tagName == 'BUTTON' )
                    this.form.elements[j].disabled = true;
            this.disabled=false;
            this.value = this.attributes.getNamedItem("value").nodeValue ;
        }
    }
}
window.attachEvent("onload", buttonfix);
// Solo para IE 6
<!--[if lt IE 7]>
    <script type="text/javascript" src="buttonfix.js"></script>
<![endif]-->

Este código, nos añadirá una funcionalidad que será ejecutada al hacer click sobre cualquier elemento button de la página y que desactivará todos los elementos <button /> que encuentre para que no sean el que hemos seleccionado.

Esta solución, lamentablemente nos obliga a tener el javascript activado, así que más que solución es un parche, habrá que esperar a que IE6 desaparezca.

Via.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.