2010-09-24 22 views
5

cómo deshabilitar/habilitar un botón específico por jquery (por nombre)?cómo deshabilitar/habilitar un botón por jquery

El botón no tiene ID, simplemente este código:

<button onclick="$('ChangeAction').value='SaveAndDoOrder';" value="Bye" name="SaveAndDoOrder" type="submit"> 
     <i class="Icon ContinueIconTiny"></i> 
     <span class="SelectedItem">Bye</span> 
     </button> 
+2

Debe intentar la búsqueda antes de hacer una nueva publicación, en los últimos días se ha hecho la misma pregunta algunas veces. – RobertPitt

Respuesta

5

Yo recomendaría el uso de ID en lugar del nombre, como:

$("#myButton").attr("disabled", true); 

Esto agregará el disabled attribute al botón de la cual su el navegador se desactivará automáticamente. Si desea utilizar el nombre se puede utilizar de esta manera:

$("button[name=myButton]").attr("disabled", true); 
+0

La pregunta solicitó una forma de desactivar/habilitar un botón por nombre y no por id. –

+0

este código no funciona, ¡mire mi código html actualizado arriba! – Tom

+0

¡Ah! Gracias por el comentario, actualizado. –

4

Prueba esto:

$("button[name=SaveAndDoOrder]").attr("disabled", "disabled"); 

que desactiva un botón con un name atribuyen igual a nameOfButton.

$("button[name=SaveAndDoOrder]").removeAttr("disabled"); 

Esto eliminará el atributo de deshabilitar del mismo botón.

+0

gracias, pero este código no funciona, ¡mire mi código html actualizado arriba! – Tom

+1

Pruebe mi respuesta revisada :) –

0

Al menos ya se ha dado una respuesta que debería funcionar.

Lo que diría es que se recomienda tener siempre una identificación en sus elementos, y no solo confiar en el atributo de nombre. El atributo de nombre realmente solo está destinado a ser un marcador para publicar elementos de formulario.

CSS y Javascript DOM están optimizados para ver los ID. Puede hacerlo por nombre, como en las respuestas que ya recibió, pero es mucho menos eficiente, incluso si puede hacerlo con la misma cantidad de código, el navegador tendrá que trabajar más entre bastidores.

También algunas de las técnicas para acceder a los elementos por nombre no están disponibles en todos los navegadores (las versiones anteriores de IE en particular tienen problemas con las clases de [atributo] en CSS).

0

Este es el código que utilizo para desactivar o volver a activar un control:

function handleControlDisplay(className, foundCount, checked) { 



    var button = jQuery(className); 



    if (foundCount > 0 && foundCount == checked) { 

     // enable 

     button.removeAttr("disabled"); 

    } 

    else { 

     // set the disabled attribute 

     button.attr("disabled", "true"); 

    }; 

} 
0

crear y utilizar un plugin de jQuery:

; (function($) { 
    $.fn.enable = function(b) { 
     return this.each(function() { 
      this.disabled = !b; 
     }); 
    }; 
})(jQuery); 

utilizar de esta manera

$(selector).enable(true|false); 
0

Suponiendo que el botón es:

<asp:Button runat="server" ID="btn1" Text="button!"/> 

continuación, desactivando se llevará a cabo de modo:

$(document).ready (function() { 
    var a = $('#btn1'); 
    a.attr("disabled", function() { 
     return "disabled"; 
    });  
}); 

funciona perfectamente

0

que utilizan jQuery's prop():

$('#generate').click(function() { 
    $(this).prop('disabled', true); 
} 

Para activar de nuevo el botón, hacer:

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

en algún lugar de y nuestro código