2009-04-23 8 views

Respuesta

23

¿Qué tal usar el selector de niños?

$("#myfieldeset").children().attr("disabled", "disabled"); 

También puede filtrar la selección hijos:

$("#myfieldeset").children("a,input"); 
+0

Gracias !! ¡Utilicé algo similar pero tu explicación será útil para otra cosa que tengo que hacer! :-) – AndreMiranda

+6

a partir de jquery 1.6, [se recomienda usar '.prop()' en lugar de '.attr()' para establecer el valor de las propiedades] (http://api.jquery.com/prop/#prop2), esto puede ser como: '.prop (" disabled ", true)' –

+0

Observé que si el elemento del conjunto de campos padre está deshabilitado, entonces todos los elementos secundarios se desactivarán, incluso si hay un elemento fieldset habilitado. ¿Es esto un error de característica? – tarekahf

3

Suponiendo que se establece una clase = "disableMe" en el conjunto de campos que desea desactivar cualquier elemento de entrada, entonces el siguiente código debe hacer lo que tiene :

$('fieldset.disableMe :input').attr('disabled', true) 
0

Si por alguna razón no se puede añadir un ID de grupo de campos (que suele ser preferido), siempre se puede hacer esto para ocultar todo lo que es elementos secundarios:

$('fieldset:first > *').attr('disabled','disabled'); 
2

¿Por qué no sólo tiene que utilizar:

$("#myfieldeset").attr("disabled", "disabled");

que trabajó para mí. Deshabilitó muy bien todas las entradas de los niños.

EDIT: nota que el atributo disabled se puede aplicar al elemento fieldset solo en HTML5 (consulte el comentario de merryprankster). Por extraño que parezca, funciona con otro navegador además de Firefox y Opera, como Chrome e Internet Explorer (probado IE7 e IE8).

+0

Eso es HTML5, ¿verdad? – merryprankster

+0

No. El atributo disabled data de html 4. Origen: [disabled attribute] (http://www.w3schools.com/tags/att_input_disabled.asp) – franzlorenzon

+2

no es . Su enlace es acerca de elementos;
s no tienen el atributo 'disabled' antes de HTML5 (y el soporte parece ser muy limitado). [Fuente] (http://w3schools.com/HTML5/att_fieldset_disabled.asp) – merryprankster

0

probar este fragmento de código:

$("#myfieldeset").attr("disabled", "disabled"); 
2

Además de lo que publican otros:

Uso .prop() en lugar de .attr():

$('#myfieldset').prop('disabled',true) 

Es más correcto con respecto a la DOM.

Y parece que no funciona bien con la validación. Tanto Firefox como Chrome no me permitirán enviar el formulario con las entradas "requeridas" sin llenar en el fieldset deshabilitado, pero tampoco dan instrucciones sobre cómo completar el formulario.

6

Puede establecer el atributo disabled de fieldset.

De MDN:

Si este atributo booleano está establecido, los controles de formularios que son sus descendientes, salvo descendientes de su primer elemento opcional, están desactivados, es decir, no se puede editar. No recibirán ningún evento de exploración, como clics del mouse o relacionados con el enfoque. A menudo, los navegadores muestran controles como el gris.


HTML: <fieldset disabled> ... </fieldset>

jQuery: $('#myfieldset').prop('disabled', true);

JS: document.getElementById('#myFieldset').disabled = true;


Nota importante: Esto no funciona correctamente en Internet Explorer debido a un par de errores, pero funciona bien en casi todos los demás (incluido Edge).

Errores

IE: 1, 2

tl; dr: entradas de texto y archivos no desactivan correctamente, y el usuario puede interactuar con ellos

Si esto es un tema de oferta, se necesita ir al fieldset y poner disabled en sus descendientes como se describe en otras respuestas aquí.


información de servicio técnico navegador: http://caniuse.com/#feat=fieldset-disabled

Cuestiones relacionadas