¿Cómo deshabilitar todos los <input> dentro de un formulario con jQuery?


Respuestas:


283

En versiones anteriores que podrías usar attr. A partir de jQuery 1.6 deberías usar propen su lugar:

$("#target :input").prop("disabled", true);

Para deshabilitar todos los elementos de formulario dentro de 'target'. Ver :input:

Coincide con todos los elementos de entrada, área de texto, selección y botón.

Si solo quieres los <input>elementos:

$("#target input").prop("disabled", true);

21
A partir de jQuery 1.6 debe usar$("#target :input").prop("disabled", true);
danijel

44
Alguien debería editar la respuesta con el método actualizado; esta es solo una mala información en este momento.
Ben Claar

y en una devolución de llamada submit (), usando $ (this), ¿cómo hacer eso?
Olivier Pons

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. No estoy seguro de si puede consolidar eso mejor, todavía soy bastante novato en jQuery.
wjervis

39

El ejemplo anterior es técnicamente incorrecto. Según la última versión de jQuery, el prop()método debe usarse para cosas como deshabilitado. Ver su página API.

Para deshabilitar todos los elementos de formulario dentro del 'objetivo', use el selector de entrada: que coincide con todos los elementos de entrada, área de texto, selección y botón.

$("#target :input").prop("disabled", true);

Si solo quieres los elementos, usa esto.

$("#target input").prop("disabled", true);

15

También la forma más concisa es utilizar su motor de selección. Entonces, para deshabilitar todos los elementos de formulario en un div o formulario principal.

$myForm.find(':input:not(:disabled)').prop('disabled',true)

13

puedes añadir

 <fieldset class="fieldset">

y luego puedes llamar

 $('.fieldset').prop('disabled', true);

8

Para deshabilitar todos los formularios, tan fácil como escribir:

jQuery 1.6+

$("#form :input").prop("disabled", true);

jQuery 1.5 y abajo

$("#form :input").attr('disabled','disabled');

8

Con esta línea puede deshabilitar cualquier campo de entrada en un formulario

$('form *').prop('disabled', true);

esto agrega innecesariamente una propiedad deshabilitada a cada elemento del formulario.
Osvaldo Maria

@OsvaldoMaria, sí, eso es debido al selector de estrella (todos), puede agregar una clase .custom a todos los elementos de entrada que desea deshabilitar, luego cambiar el selector a $ ('form .custom-class'). Prop ( 'deshabilitado', verdadero ').
Samir Rahimy

-1

Gnarf ha dado la respuesta definitiva (que cubre los cambios a la API jQuery en la versión 1.6)


Pidió "deshabilitar todas las entradas dentro de un formulario", no solo "deshabilitar todas las entradas".
Bengala

@Bengala seguro, pero me estás marcando duramente por ser el primero en señalar que la API había cambiado. En el momento en que publiqué esto, ninguna de las otras respuestas mencionó este punto.
ErichBSchulz

Entiendo, pero creo que debe incluir una respuesta correcta con los créditos respectivos, el enlace solo muestra cómo deshabilitar todas las entradas, lo cual insisto, no responde en absoluto a la pregunta.
Bengala
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.