2012-01-03 37 views
19

solía unir evento a mi botón:jQuery para desactivar el botón no funciona

$("input[name=add]").live("click",function(){...}); 

Pero tengo otra función para que sean "activar" y "desactivado" como:

RefreshBox() { 

    $("input[name=add]").each(function(){ 
     if(...) 
      $(this).attr("disabled","disabled"); 
     else 
      $(this).attr("disabled",""); 
    }) 

} 

Pero, de hecho, no funciona como esperaba. Los botones todavía se pueden hacer clic y el evento aún funciona sin problemas.

PS: jQuery 1.4.1 Navegador: IE8, después del botón deshabilitado todavía puede funcionar. Navegador: Chrome, éxito del botón desactivado.

+0

lo que es 'si (...)'? –

+0

¿Qué versión de jQuery estás usando? –

+0

No puedo reproducir este problema. Consulte http://jsfiddle.net/liho1eye/yfA8d/ para obtener un código de muestra. Sospecho que no está utilizando el selector correcto o que no se está llamando su código de deshabilitación. –

Respuesta

44

Usted querrá utilizar la función prop en lugar de attr:

$(this).prop("disabled", true); 

y

$(this).prop("disabled", false); 

EDITAR

OP estaba usando jQuery pre 1.6.1, que era por qué attr para disabled no funcionaba correctamente (para IE más antiguo). Mientras que prop se prefiere para disabled, la publicación 1.6.1 attr debe funcionar (y funciona) también.

+0

1 Me ganaste. –

+1

¿No está deshabilitado también un atributo? P.ej. 'disabled =" disabled "' – PeeHaa

+0

Si estoy leyendo la pregunta correctamente, su problema es que no puede desactivar el botón, no volver a habilitarlo. –

5

Pruebe $("input[type=submit]").removeAttr("disabled"); para habilitar el botón.

+0

No es el problema que describe el OP. –

+0

Me refiero al botón todavía se puede hacer clic después de que lo desactivé con el código $ .attr ("disabled", "disabled"); – Ericpoon

3

Puede establecer el atributo 'desactivado' false usando:

$("input[name='add']").attr("disabled","disabled"); 
Cuestiones relacionadas