2010-10-26 5 views
26

J'utilise jQuery pour ajouter un attribut readonly à tous les éléments de formulaire, mais je n'arrive pas à comprendre comment procéder.Ajout d'un attribut readonly à tous les éléments de formulaire

Voici ce que je suis en train:

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

je une forme simple en utilisant l'étiquette/entrée pour afficher les éléments de formulaire. Aussi J'utilise tipsy (plug-in Pointe de l'outil), ainsi que Formalize (Look and Feel Plug-in)

Répondre

62

Essayez ceci:

$('#form1 input').attr('readonly', 'readonly'); 
  • Vous pouvez inclure plusieurs éléments #form1 input, #form1 textarea, #form1 select
  • En jQuery, vous n'avez généralement pas besoin de parcourir la collection. attr fonctionnerait pour une collection identique à celle d'un seul élément.
  • Dans votre cas, #form1 correspondait à l'élément <form>, et each était une fois,, pour cet élément. Pour trouver tous les éléments (entrée ou non), vous pouvez écrire #form1 *.
+3

juste un détail technique, mais « attr ('readonly ', true) "vaut mieux que" attr (' readonly ',' readonly '). La méthode "attr()" de jQuery fonctionne sur les propriétés DOM, pas sur les attributs HTML réels, et la valeur de propriété "readonly" doit être "tr ue "ou" faux ". Il se trouve que 'readonly' est vrai en javascript, mais il est préférable d'inclure le booléen pour commencer. –

+0

hmm toujours pas de chance –

+2

@Phill, comment * précisément * cela ne fonctionne t-il pas pour vous? Est-ce que ça ne fait rien du tout? Retourne une erreur js? Autre chose? –

36

Ceci est encore mieux d'utiliser le input selector. Notez également que Read only est seulement pour le type de texte et mot de passe et textarea. Il ne fonctionnera pas sur certains éléments, radio, cases à cocher, boutons. Si vous voulez afficher mais ne pas leur permettre de taper ou de cliquer. Essayez d'utiliser désactivé.

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

Note: en utilisant désactivé il grisé l'entrée, sélectionnez ou textarea mais pas poster cet élément lorsqu'il est soumis. Si vous avez besoin de poster, faites le moi savoir et je peux vous aider.

Voici un demohttp://jsfiddle.net/j5PAn/

+0

Merci cela a aidé –

+0

@Phil Je n'ai pas réellement fini d'entrer ma question ... vous peut vouloir relire –

+0

Bonjour, je veux poster des éléments de formulaire désactivés, pouvez-vous m'aider? – eXtreme

4

Pour obtenir tous les éléments de la forme:

$.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> 

probablement la meilleure façon de le faire

Questions connexes