Oui mais ça ne marche pas.
Tu es sur que c'est grisé et non coché que tu veux? Car je ne vois pas trop l'intérêt après tu peux grisé le tout et sélectionner celui que tu veux.
Effectivement je veux que le "oui" de obligatoire et le "non" de conditionnelle soient cochés. J'ai essayé avec setValue() mais c'est pas vraiment ce que je veux.
donc c'est autre chose.
Moi j'ai utilisé setValue de la manière suivante et ça fonctionne:
Comment l'utilises-tu?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $obligatoire->addMultiOptions(array('1' => 'Oui', '0' => 'Non')); $obligatoire->setValue('1', 'Oui'); $contionnel->addMultiOptions(array('1' => 'Oui', '0' => 'Non')); $contionnel->setValue('0', 'Non');
Avec setValue() le "oui" est bien coché, mais l’utilisateur peut aussi coché sur le "non". Alors que je souhaite que le "non" soit bloqué.
Je vais peut être ré expliquer mon problème.
Alors j'ai un formulaire qui permet de créer des sections. Lors de la première création, l'utilisateur ne doit pas avoir le choix de sélection "non" sur le champ obligatoire et "oui" sur le champ conditionnel.
Lors de la deuxième création, l’utilisateur a le choix de sélectionner la réponse qu'il veut.
J'espère que j'ai bien expliqué mon problème
Merci encore à tous
Et en ajoutant la précédente réponse :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ->setAttrib('disabled', 'disabled');
Quand je rajoutele bouton est bien grisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ->setAttrib('disabled', 'disabled');
Maintenant comment faire pour qu'il ne soit plus grisé lors de la création de la 2e section?
Dois-je faire une fonction javascript qui test si c'est la 1ère section alors la grisée sinon l'utilisateur peut faire son choix?
Merci encore
Oui tu dois utiliser du javascript si tu n'as pas de rafraichissement de la page, sinon avec
->setAttrib('disabled', '');
Le javascript c'est pas trop mon truc.
Alors j'ai fait une fonction qui renvoie un tableau de section :
Cette fonction se trouve dans ma lecture.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public function getSectionBySondage(Application_Model_Sondage $sondage) { $sections = $this->dbSection->getBySondage($sondage); $return = array(); foreach ($sections as $section) { $section->setLibelle($this->dbTraduction->getTraduction($section->getId(), 'section')); $return[] = $section; } return $return; }
Je souhaite que la fonction javascript fasse le test sur l'indice de la section. Si l'indice de la section est 0 alors on grise les boutons.
Sauf que j'ai du mal à concevoir ce bout de code et je n'arrive pas à faire le lien entre la fonctionet la fonction javascript.
Code : Sélectionner tout - Visualiser dans une fenêtre à part getSectionBySondage()
J'ai essayé de faire cette fonction:
Merci de m'aider.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function griserBouton(index){ var section=new Array(); alert(index); if(section[0]){ document.getElementById('obligatoire').disabled=(index == 1); document.getElementById('conditionnel').disabled=(index == 1); } }
Tu aurais un screen de comment ça se présente pour mieux comprendre
Voici le formulaire pour l’ajout de la première section:
Lorsqu’on clique sur ajouter section, étant donnée que c’est la première section, le formulaire doit se présenter comme ci-dessous :
Ce qui indique que la première section est obligatoire et non conditionnelle.
Ensuite lorsqu’on veut ajouter la 2e section, le formulaire devient :
Ce qui permet à l’utilisateur de choisir si sa section est obligatoire et conditionnelle ou pas.
C'est ce que je souhaite faire.
Merci encore pour le temps que vous m'accorder.
Mais pour afficher le formulaire de la section deux, c'est fait en javascript ou c'est une action donc un changement de page
J'aimerai le faire en javascript mais je ne n'arrive pas. En fait je cherche une solution pour le faire.
Mais la comment ça fonctionne actuellement? pour aller à la section 2 ?
Ma question c'est comment tu y va ?
Tu clique sur un bouton qui t'envoi en section 2 ?
C'est sur la même page rien est fait ?
etc
Désolez , j'avais pas compris la question. J'ajoute la 2e section avec un bouton ajout section.
Voici comment se présente le formulaire quand la 1ère section est ajouté:
Lorsque je clique sur ajout formulaire,j'arrive sur cette page:
Alors que je souhaiterais que le formulaire soit comme ci dessous:
J’espère que je suis bien expliquée cette fois.
Oui trés bien par contre tu peux me faire voir le lien sur le bouton ajouter section, que je sois sur d'un truc.
C'est gérer par ton controller au moment du clique non?
Si c'est la cas pas besoin de javascript
Oui c'est géré par le contrôleur. Voici le lien sur l'ajoutEt la fonction section action du contrôleur si besoin:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a href="/questionnaire/section/s/30"> <span class="ajout">Ajouter section</span>
Merci encore pour le temps que tu m'accorde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 public function sectionAction() { $idSection = $this->_request->getParam('sec'); if (isset($idSection)) { $section = $this->lecture->getSectionById($idSection); $sondage = $this->lecture->getSondageBySection($section); } $idSondage = $this->_request->getParam('s'); if (isset($idSondage)) $sondage = $this->lecture->getSondageById($idSondage); $langues = $this->lecture->getLanguesBySondage($sondage); if (in_array($this->view->langue(), $langues)) $lang = $this->view->langue(); else $lang = $langues[0]; $questions = $this->lecture->getQuestionBySondage($sondage); $form = new Application_Form_SectionForm($lang, $langues, $questions); $this->view->form = $form; $this->view->sondage = $sondage; if ($this->_request->isPost() && $this->_request->getPost('Valider')) { $formData = $this->_request->getPost(); if ($form->isValid($formData)) { $langue = array(); foreach ($formData as $key => $lang) { if (preg_match("/lang_/", $key) > 0) { $langue[preg_replace("/lang_/", "", $key)] = $lang; unset($formData[$key]); } } /* var_dump($langue); var_dump($formData); die; */ $Visible = 0; if ($formData["conditionnelle"] == "0") $Visible = 1; $section = new Application_Model_Section(null, $sondage, $formData["obligatoire"], $langue, null); $id = $this->ecriture->saveSection($section); if (isset($idSection)) $this->ecriture->saveSousSection($idSection, $id); $this->_redirect("questionnaire/index/id/" . $sondage->getId()); } } }
Tu peux juste m'indiquer ou ça ajoute ta section dans ton controller (ce qui permet de l afficher)
Désolé mais c'est que je n'ai pas le temps de chercher à comprendre ton code
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager