2012-06-14 11 views
5

Estoy tratando de obtener algo de jQuery para deshabilitar el botón confirmar en mi formulario si la lista desplegable tiene un valor determinado, pero no parece estar funcionando.Jquery para deshabilitar un botón HTML no funciona

He leído muchas publicaciones aquí y he intentado de diferentes maneras.

Aquí está mi código en la actualidad

<script> 
     $(document).ready(function() { 
     // Handler for .ready() called. 
     $('#MoveToCompanyId').attr("disabled", true); 

     $('#DeleteAll').live("click", function() { 

      if ($(this).attr("value") == "True") { 
       $('#MoveToCompanyId').attr("disabled", true); 
      } else { 
       $('#MoveToCompanyId').attr("disabled", false); 
       $('#confirm').attr("disabled", true); 
       $('#MoveToCompanyId').change(function() { 
        if ($("#MoveToCompanyId option:selected").text() != "---Select Company---") { 
        $('#confirm').removeAttr("disabled"); 
        alert($("#MoveToCompanyId option:selected").text()); 
       } 
       else { 
        $('#confirm').attr("disabled", true); 
        alert("I should be disabled!"); 
       } 

      }); 
     } 
     }); 
    }); 

    </script> 

Puede alguien ver ningún problema con ella?

Solo para aclarar, sé que se mete en los bloques de código correctos ya que mis alertas están funcionando. Es solo el botón de deshabilitación que no funciona.

Saludos cordiales,

Gareth

+0

Pruebe '.prop' en lugar de' .attr'. –

+0

Desafortunadamente esto tampoco funcionó. Estoy mirando el botón en Firebug y nunca parece agregar el atributo deshabilitado en absoluto. –

+0

¿Puedes manipular tu código? –

Respuesta

10

Debería utilizar

prop('disabled',true) 
prop('disabled',false) 

si está utilizando jQuery 1.6 + b, entonces debería e usando prop.

leer más sobre prop

propiedades generalmente afectan el estado dinámico de un elemento DOM sin cambiar el atributo HTML en serie. Los ejemplos incluyen la propiedad de valor de los elementos de entrada, la propiedad deshabilitada de las entradas y los botones, o la propiedad marcada de una casilla de verificación. El método .prop() se debe usar para desactivar y verificar en lugar del método .attr(). El método .val() se debe usar para obtener y establecer el valor.

+0

gracias por ese consejo, por desgracia esto tampoco parece funcionar. –

+0

En realidad, esto funciona ahora. Muchas gracias por tu ayuda –

+0

Me alegro de ayudar :) –

3

Debería utilizar

.attr('disabled', 'disabled') 

para desactivar un control y

.removeAttr('disabled') 

para que pueda.

http://www.w3schools.com/tags/att_input_disabled.asp

+0

Gracias Dave, ¡esta es una de las cosas que ya intenté en vano! –

+0

pero attr ("disabled", true) funcionó para mí! –

+0

@BehnamEsmaili especificando un valor arbitrario para 'deshabilitado' deshabilitará un control pero la única manera de volver a habilitarlo es eliminar el atributo 'deshabilitado' por completo – Dave

0

Trate

attr('disabled', 'disabled') 

en lugar de

attr("disabled", true); 
+0

attr ("disabled", true); no funciona en es decir, – MJK