web-dev-qa-db-fra.com

Ajout de l'attribut readonly à tous les éléments de formulaire

J'utilise jQuery pour ajouter un attribut en lecture seule à tous les éléments de formulaire, mais je n'arrive pas à comprendre comment faire cela.

Voici ce que j'essaye:

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

J'ai un formulaire simple utilisant label/input pour afficher les éléments de formulaire . J'utilise aussi tipsy (plug-in d'outils) ainsi que Formaliser (plug-in Look and Feel)

27
Phill Pafford

Essaye ça:

$('#form1 input').attr('readonly', 'readonly');
  • Vous voudrez peut-être inclure plus d'éléments #form1 input, #form1 textarea, #form1 select
  • Dans 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 correspond uniquement à l'élément <form> et each a été déclenché une fois , pour cet élément. Pour trouver tous éléments (en entrée ou non), vous pouvez écrire #form1 *.
66
Kobi

C’est encore mieux utiliser le sélecteur d’entrée . Notez également que la lecture seule concerne uniquement le type de texte saisi, le mot de passe et textarea. Cela ne fonctionnera pas sur certains éléments, radio, cases à cocher, boutons. Si vous souhaitez afficher mais ne leur permettez pas de taper ou de cliquer. Essayez d'utiliser désactivé.

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

Remarque: si vous utilisez Disabled, les entrées, la sélection ou les zones de texte sont grisées, mais ne seront pas publiées si elles sont soumises. Si vous en avez besoin, faites-le moi savoir et je peux vous aider.

Voici un démo _ { http://jsfiddle.net/j5PAn/

37
John Hartsock

Pour obtenir tous les éléments de forme:

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

probablement le meilleur moyen de le faire

0
Rossitten