J'ai deux pages avec des formulaires HTML. La première page a un formulaire de soumission et la deuxième page a un formulaire de reconnaissance. Le premier formulaire offre un choix de nombreux contrôles, tandis que la deuxième page affiche à nouveau les données du formulaire de soumission avec un message de confirmation. Sur ce second formulaire, tous les champs doivent être statiques.
D'après ce que je peux voir, certains contrôles de formulaire peuvent être readonly
et tous peuvent l'être disabled
, la différence étant que vous pouvez toujours accéder à un champ en lecture seule.
Plutôt que de faire ce champ par champ, existe-t-il un moyen de marquer le formulaire entier comme en lecture seule / désactivé / statique de sorte que l'utilisateur ne puisse modifier aucun des contrôles?
Tous les éléments de formulaire ne peuvent pas être définis sur
readonly
, par exemple:Ensuite, la solution raisonnable serait de définir tous les
disabled
attributs des éléments de formulaire surtrue
, puisque l'OP n'a pas déclaré que le formulaire "verrouillé" spécifique devrait être envoyé au serveur (ce que l'disabled
attribut ne permet pas).Une autre solution, présentée dans la démo ci-dessous, consiste à placer un calque au-dessus de l'
form
élément, ce qui empêchera toute interaction avec tous les éléments à l'intérieur de l'form
élément, car ce calque est défini avec unez-index
valeur plus élevée:DÉMO:
la source
Vous pouvez utiliser cette fonction pour désactiver le formulaire:
Voir la démo de travail ici
Notez qu'il utilise jQuery.
la source
Sur la page de confirmation, ne placez pas le contenu dans des contrôles modifiables, écrivez-les simplement sur la page.
la source
Il n'y a aucun moyen intégré que je connaisse pour le faire, vous devrez donc proposer une solution personnalisée en fonction de la complexité de votre formulaire. Vous devriez lire cet article:
Convertir les formulaires HTML en lecture seule ( Mise à jour : lien de publication cassé, lien archivé )
EDIT: Sur la base de votre mise à jour, pourquoi êtes-vous si inquiet de l'avoir en lecture seule? Vous pouvez le faire via le côté client, mais sinon, vous devrez ajouter la balise requise à chaque contrôle ou convertir les données et les afficher sous forme de texte brut sans contrôle. Si vous essayez de le rendre en lecture seule pour que le prochain message ne soit pas modifié, vous avez un problème car n'importe qui peut jouer avec le message pour produire ce qu'il veut, alors lorsque vous recevez enfin les données, vous feriez mieux de le vérifier. à nouveau pour vous assurer qu'il est valide.
la source
Il n'y a pas de méthode HTML officielle et entièrement conforme pour le faire, mais un peu de javascript peut aller très loin. Un autre problème que vous rencontrerez est que les champs désactivés n'apparaissent pas dans les données POST
la source
C'est une solution idéale pour désactiver toutes les entrées , zones de texte , sélections et boutons dans un élément spécifié.
Pour jQuery 1.6 et supérieur :
Ou
jQuery 1.5 et inférieur :
Et
la source
Un autre moyen simple pris en charge par tous les navigateurs serait:
HTML:
CSS:
Mais sachez que la tabulation fonctionne toujours avec cette approche et que les éléments avec le focus peuvent toujours être manipulés par l'utilisateur.
la source
Faites numéroter tous les identifiants de formulaire et exécutez une boucle for dans JS.
la source
Je préfère utiliser jQuery:
find () irait beaucoup plus loin jusqu'au nième enfant imbriqué que children (), qui ne recherche que les enfants immédiats.
la source
Le moyen le plus simple
la source
Vous ajoutez une couche invisible html sur le formulaire. Par exemple
et style:
Bien sûr, l'utilisateur peut masquer cette couche dans le navigateur Web.
la source