Désactivé formulaire.

Résolu
Wamy -  
Steeevec Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai une question toute bête sur les formulaires HTML.
je cherche un moyen de désactiver tous les éléments du formulaire en une fois. (une seule action).

j'ai trouvé une solution, qui est de mettre le formulaire dans un <div></div>...et d'attribuer DISABLED au DIV..
cela fonctionne, ms la page deviens presque illisible en raison du 'disabled' qui grise tout.

Je connais l'attribut READONLY, mais celui ci ne fonctionne pas sur le div.

Je sais aussi qu'on peux donner un id du type id1, id2, id3..aux controles..Et créer une fonction js qui les désactive a l'aide d'une boucle, mais je ne peux pas, dans ce cas, me permettre de changer les id existants.. argh !!

Quelqu'un aurait il une solution ?

Merci d'avance

Wamy

6 réponses

Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
function disableForm(){
  //Si tu n'as qu'un formulaire
   var form = document.forms[0];
  
  //Si tu en as plusieurs, qui sont définis par un nom
  var form = document.nomFormulaire;

  for(var i = 0; i < form.length; i++){
       form.elements[i].disabled = true;
  }
}


Le tableau document.forms[].elements reprend tout élément input d'un formulaire donné.
Plus d'explications ici : http://docs.sun.com/source/816-6408-10/form.htm
4
Wamy
 
Merci Xil..
effectivement, c tout con ! j'aurai du y penser !! lol

J'ai fait une petite modif toutefois a ton code, je la post, on sais jms, ca pourra peut etre servir a un prochain.
Le disable fonctionne nickel, mais a l'affichage, il grise tout...et le formulaire deviens difficilement lisible.

Du coup j'ai utiliser le readonly, qui lui, empeche l'utilisateur de saisir, mais laisse le meme "visuel"...

Voici la fonction modifiée :

function disableForm(){
//Si tu n'as qu'un formulaire
var form = document.forms[0];

//Si tu en as plusieurs, qui sont définis par un nom
var form = document.nomFormulaire;

for(var i = 0; i < form.length; i++){
form.elements[i].disabled = true; --->> REMPLACER PAR : form.elements[i].readOnly = false/true; (attention aux majuscules...)
}
}
1
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
Effectivement, selon l'utilisation, readonly est peut-être plus approprié.

Dans mes souvenirs, un champ désactivé (disabled) ne génère pas de variable POST PHP, ca peut donc faire des erreurs.

Petit détail : un champ en readonly n'est visuellement pas reconnaissable, la couleur n'est pas modifiée (blanche ou définie en CSS)
Il est donc judicieux, et pratique pour l'utilisateur, de la modifier. Par exemple, en gris clair:
 form.elements[i].style.backgroundColor = '#CCC';


Ceci modifie uniquement la couleur de fond et non la couleur du texte, il reste donc lisible. Puis les couleurs sont au choix ;)

Voila, c'était juste un petit complément d'informations ;)
1
Wamy Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
j'pense que je pouvai pas mettre le message en résolu, puisque j'n'étai pas membre.
Maintenant inscrit sur CCM, j'ai l'option, alors ....HOP..résolou !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Steeevec Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Si vos champs de formulaire flottent en dehors d'un formulaire (par maj auto en javascript par exemple), il y a ce scripte ressemblant:
<script type="text/javascript">
		function disableForm() {
			var inputs = document.getElementsByTagName("input");
			for (var i = 0; i < inputs.length; i++) {
				inputs[i].disabled = true;
			}
			var selects = document.getElementsByTagName("select");
			for (var i = 0; i < selects.length; i++) {
				selects[i].disabled = true;
			}
			var textareas = document.getElementsByTagName("textarea");
			for (var i = 0; i < textareas.length; i++) {
				textareas[i].disabled = true;
			}
			var buttons = document.getElementsByTagName("button");
			for (var i = 0; i < buttons.length; i++) {
				buttons[i].disabled = true;
			}
		}
		disableForm();
</script>
0
Steeevec Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Et en grisant le fond comme suggeré par Xil
<script type="text/javascript">
		function disableForm() {
			var inputs = document.getElementsByTagName("input");
			for (var i = 0; i < inputs.length; i++) {
				inputs[i].disabled = true;
				inputs[i].style.backgroundColor = '#d8d8d8';
			}
			var selects = document.getElementsByTagName("select");
			for (var i = 0; i < selects.length; i++) {
				selects[i].disabled = true;
				inputs[i].style.backgroundColor = '#d8d8d8';
			}
			var textareas = document.getElementsByTagName("textarea");
			for (var i = 0; i < textareas.length; i++) {
				textareas[i].disabled = true;
				inputs[i].style.backgroundColor = '#d8d8d8';
			}
			var buttons = document.getElementsByTagName("button");
			for (var i = 0; i < buttons.length; i++) {
				buttons[i].disabled = true;
				inputs[i].style.backgroundColor = '#d8d8d8';
			}
		}
		disableForm();
 </script>
0