IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

formulaire POST, envoyer un champ "disabled"


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Points : 71
    Points
    71
    Par défaut formulaire POST, envoyer un champ "disabled"
    Bonjour,

    J'ai un problème, dans mon formulaire, avec des champs "disabled": il s'avère qu'on ne peut pas les envoyer, leur valeur n'est pas reçue dans la variable request (je travaille en ASP). J'ai un gros formulaire, avec des input et des select, et selon l'accès ces contrôles sont verrouillés. Donc pour ne pas faire 2 pages distinctes j'ajoute simplement l'attribut disabled.

    Pour que le formulaire soit correctement posté malgrès tout j'utilise ce code javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // les éléments disabled ne sont pas envoyé, donc on les rend tous enabled
    var tech_access = document.getElementById('per_cp').disabled;
    if (tech_access == true) 
    	for(var i=0; i<document.forms['aform'].length; i++) document.forms['aform'].elements[i].disabled = "";
    document.getElementById('aform').submit();
    if (tech_access == true) // re-désactiver les contrôles
    	for(var i=0; i<document.forms['aform'].length; i++) document.forms['aform'].elements[i].disabled = "";
    j'ai ajouté la dernière partie (réactiver les contrôles) car lorsqu'on submit, tous les controles restent libres un certain temps avant que la page suivante ne soit chargée. Mais ça marche pas :'(
    Y a-t-il une autre solution équivalente?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2005
    Messages : 357
    Points : 537
    Points
    537
    Par défaut
    Plutôt que disabled, utilise plutôt les paramètres css de type display:none, ainsi les éléments en question ne sont pas affichés mais leurs valeurs seront correctement transmises. Ou alors utilise readonly pour les champs de type text

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 89
    Points : 102
    Points
    102
    Par défaut
    Si je comprends bien ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (tech_access == true)
    for(var i=0; i<document.forms['aform'].length; i++) document.forms['aform'].elements[i].disabled = "";
    permet selon toi d'activer les champs et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (tech_access == true) // re-désactiver les contrôles
    for(var i=0; i<document.forms['aform'].length; i++) document.forms['aform'].elements[i].disabled = "";
    permet de les "re-désactiver".
    La question à 2 balles : vois-tu une différence entre le code qui permet "d'activer" et de "re-désactiver" ??? !

    Si tu veux vraiment activer un contrôle, supprime complètement l'attribut disabled au moyen d'un removeAttributeNode().

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 80
    Points : 71
    Points
    71
    Par défaut
    Tout d'abord merci pour vos réponses
    beebo je ne peux pas utiliser ta solution car certaines valeurs sont malgrès tout modifiées par JS et de plus je souhaite que les valeurs soient affichées (je pourrais toujours afficher un div en lieu et place affichant la valeur du controle caché mais bon ça complexifie encore vu que ça devrait être maintenu à jour paralèllement...)
    JulienC > merci pour ta judicieuse remarque ^^ la désactivation marchait bien et pour le réactiver il suffit de faire un document.forms['aform'].elements[i].disabled = "true";
    et le tour est joué (enfin on va dire...)
    sinon je suppose que je devrais utiliser un appendAttributeNode('disabled') ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formulaire POST envoyé sur une page en GET
    Par Eusebius dans le forum Langage
    Réponses: 15
    Dernier message: 01/09/2006, 17h10
  2. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo