Deshabilitar y habilitar un botón de entrada html


250

Entonces tengo un botón como este:

<input id="Button" type="button" value="+" style="background-color:grey" onclick="Me();"/>

¿Cómo puedo deshabilitarlo y habilitarlo cuando quiero? Lo he intentado disabled="disable"pero habilitarlo de nuevo es un problema. Intenté volver a establecerlo en falso, pero eso no lo habilitó.


¿Qué quieres decir con habilitarlo de nuevo? Una vez que lo deshabilita, no puede volver a habilitarlo desde el mismo método Me(), espero que sepa (porque está deshabilitado)
cjds

2
Lo que intento hacer es deshabilitar y habilitar el botón cuando ocurren ciertos eventos.
k.ken

Respuestas:


461

Usando Javascript

  • Deshabilitar un botón html

    document.getElementById("Button").disabled = true;
  • Habilitar un botón html

    document.getElementById("Button").disabled = false;
  • Demo aquí


Usando jQuery

Todas las versiones de jQuery anteriores a 1.6

  • Deshabilitar un botón html

    $('#Button').attr('disabled','disabled');
  • Habilitar un botón html

    $('#Button').removeAttr('disabled');
  • Demo aquí

Todas las versiones de jQuery después de 1.6

  • Deshabilitar un botón html

    $('#Button').prop('disabled', true);
  • Habilitar un botón html

    $('#Button').prop('disabled', false);
  • Demo aquí

PS Actualizó el código basado en los cambios de jquery 1.6.1 . Como sugerencia, use siempre los últimos archivos jquery y el prop()método.


¿Necesito los atributos allí para que esto funcione? like disables = "disable"
k.ken

No, por dentro $(document).readypuedes llamar $('#Button').attr('disabled','disabled');. Esto deshabilitará el botón al cargar la página. Y cuando ocurren ciertos eventos, puede llamar $('#Button').removeAttr('disabled');a activarlo de nuevo ...
palaѕн

¿Cómo agregar estilo gris si está deshabilitado?
Lei Yang

1
@LeiYang puedes agregar algunos CSS como este
palaѕн

Solo tenga en cuenta que verdadero y falso son booleanos, no cadenas, como escribió correctamente Palash
Marco

24

Como lo está deshabilitando en primer lugar, la forma de habilitarlo es establecer su disabledpropiedad como false.

Para cambiar su disabledpropiedad en Javascript, use esto:

var btn = document.getElementById("Button");
btn.disabled = false;

Y, obviamente, para deshabilitarlo nuevamente, lo usaría trueen su lugar.

Como también etiquetó la pregunta con jQuery, podría usar el .propmétodo. Algo como:

var btn = $("#Button");
btn.prop("disabled", true);   // Or `false`

Esto está en las versiones más nuevas de jQuery. La forma más antigua de hacer esto es agregar o eliminar un atributo así:

var btn = $("#Button");
btn.attr("disabled", "disabled");
// or
btn.removeAttr("disabled");

La mera presencia de la disabledpropiedad desactiva el elemento, por lo que no puede establecer su valor como "falso". Incluso lo siguiente debería deshabilitar el elemento

<input type="button" value="Submit" disabled="" />

Debe eliminar el atributo por completo o establecer su propiedad.


¿Qué pasa si quiero que el botón esté habilitado inicialmente y luego deshabilitado más tarde? También probé enable = "true". ¿Es habilitar la palabra clave adecuada?
k.ken

2
@ k.ken No, la palabra clave está "deshabilitada". Si desea que el botón esté habilitado inicialmente, no coloque el atributo disableden absoluto. Solo úsalo <input type="button" value="Submit" />. Y al cambiar el estado, use .prop("disabled", true);(o false)
Ian

10

Puede hacerlo con bastante facilidad con JavaScript directo, no se requieren bibliotecas.

Habilitar un botón

document.getElementById("Button").disabled=false;

Deshabilitar un botón

 document.getElementById("Button").disabled=true;

No se necesitan bibliotecas externas.


4

el atributo de desactivación solo tiene un parámetro. si desea volver a habilitarlo, debe eliminar todo, no solo cambiar el valor.


3
$(".btncancel").button({ disabled: true });

Aquí 'btncancel' es el nombre de la clase del botón.


0

Sin jQuery, la entrada de desactivación será más simple

Button.disabled=1;


0
 <!--Button Disable Script-->
    <script type="text/javascript">
        function DisableButton() {
            document.getElementById("<%=btnSave.ClientID %>").disabled = true;
        }
        window.onbeforeunload = DisableButton;
    </script>
    <!--Button Disable Script-->

-2

Esto seguramente funcionará.

Para deshabilitar un botón

$('#btn_id').button('disable');

Para habilitar un botón

$('#btn_id').button('enable');

-6

Se adhieren a php ...

¿Por qué no solo permitir que el botón aparezca una vez que se cumplan los criterios anteriores?

<?
if (whatever == something) {
    $display = '<input id="Button" type="button" value="+" style="background-color:grey" onclick="Me();"/>';
    return $display;
}
?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.