2010-10-26 14 views
26

Estoy usando jQuery para agregar un atributo de solo lectura a todos los elementos de formulario, pero parece que no puedo encontrar la manera de hacerlo.Agregar atributo de solo lectura a todos los elementos de formulario

Aquí es lo que estoy tratando:

$('#form1').each(function() { $(this).attr('readonly', true); }); 

tengo una forma sencilla utilizando la etiqueta/de entrada para mostrar los elementos del formulario. También estoy usando tipsy (Punta de la herramienta plug-in), así como Formalize (aspecto y Plug-in)

Respuesta

62

Prueba esto:

$('#form1 input').attr('readonly', 'readonly'); 
  • es posible que desee incluir más elementos #form1 input, #form1 textarea, #form1 select
  • En jQuery, generalmente no es necesario iterar sobre la colección. attr funcionaría para una colección igual que para un solo elemento.
  • En su caso, #form1 igualado sólo el elemento de <form> y each se desencadenó vez, para ese elemento. Para encontrar todos los elementos (entrada o no), puede escribir #form1 *.
+3

sólo un detalle técnico, pero "attr ('sólo lectura ', true) "es mejor que" attr (' readonly ',' readonly '). El método "attr()" de jQuery opera en propiedades DOM, no en atributos HTML reales, y el valor de propiedad para "readonly" debe ser "tr ue "o" falso ". Sucede que 'readonly' se convierte en verdadero en javascript, pero es mejor incluir el booleano para comenzar. –

+0

hmm aún no hay suerte –

+2

@Phill, ¿cómo * precisamente * no funciona para usted? ¿No hace nada en absoluto? Devuelve un error js? ¿Algo más? –

36

Esto es aún mejor uso el input selector. También tenga en cuenta que Solo lectura es solo para el tipo de entrada de texto y contraseña y área de texto. No funcionará en elementos seleccionados, radio, casillas de verificación, botones. Si desea mostrar pero no les permite escribir o hacer clic. Intenta usar deshabilitado.

$("#form1 :input").attr("disabled", true); 

Nota: mediante el uso de personas con discapacidad que se atenuará la entrada, seleccione o área de texto, pero no publicará este elemento cuando se presente. Si lo necesitas para publicar, avísame y te puedo ayudar.

Aquí es una demohttp://jsfiddle.net/j5PAn/

+0

Gracias, esto ayudó –

+0

@Phil No terminé de ingresar mi pregunta ... tal vez quiera volver a leer –

+0

Hola, quiero PUBLICAR elementos de formulario desactivados, ¿me pueden ayudar? – eXtreme

4

Para obtener todos los elementos de la forma:

$.each($('form').serializeArray(), function(index, value){ 
    $('[name="' + value.name + '"]').attr('readonly', 'readonly'); 
}); 
0
<form> 
    <fieldset disabled> 
     <input type="text"> 
     <input type="radio"> 
     <input type="checkbox"> 
    </fieldset> 
</form> 

probablemente la mejor manera de hacerlo

Cuestiones relacionadas