Disabled ne fonctionne pas pour un select

Résolu
Jack -  
 Jack -
Bonjour,

J'ai un petit soucis, j'ai crée 2 liste déroulantes associées avec Ajax, le hic est que je voudrais 'grisé' la deuxième liste lorsque l'élément sélectionné dans le première liste ne contient aucun élément.

Voila mon code javascript.

var marque = document.getElementById('marque');
var modele = document.getElementById('modele');
if (marque.value <= 0){
modele.disabled = true;
}else{
modele.disabled = false;
}

et voila mon html

<select name="marque" id="marque" onchange='go();'>
<option value="-1">Sélectionner une marque</option>
{foreach from=$marque item=marque_vehic}
<option value="{$marque_vehic[0]}">{$marque_vehic[1]}</option>
{/foreach}
</select>

<div id="modele"><select name="modele"><option value="-1">Sélectionner un modèle</option></select></div>

Je vous remercie d'avance de votre aide.
Configuration: Windows 7 / Safari 532.5

10 réponses

  1. Defouille Messages postés 404 Statut Membre 54
     
    Bonjour,

    que veux tu tester avec :
    if (marque.value <= 0){
        modele.disabled = true;
    }else{
        modele.disabled = false;
    } 
    ?
    0
  2. Jack
     
    Enfait j'ai 2 balises select. la premiere est 'marque' et la deuxieme est 'modele'
    <select id='marque'>
    <option value=-1>Sélectionner une marque</option>
    <option value=0>AUTRES</option>
    <option value=1>RENAULT</option>
    <option value=2>PEUGEOT</option>
    </select>
    et je voudrais que lorsque 'AUTRES' ou 'Sélectionner une marque' est sélectionné, le deuxième select se grise afin de ne plus pouvoir toucher à la liste.
    0
  3. Defouille Messages postés 404 Statut Membre 54
     
    Alors teste :
    if (marque.options.selectedIndex <= 0){
    modele.disabled = true;
    }else{
    modele.disabled = false;
    }
    0
  4. Jack
     
    Non, sa me met des traits dans le deuxième select.
    Petit aparte, j'ai essayé de masquer le select avec modele.style.visibility = 'hidden'; cela fonctionne.
    Est-ce que sa peu venir du fait que le deuxième select est dans un div ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Defouille Messages postés 404 Statut Membre 54
     
    Ca te met "des traits dans le deuxième select" ? Oo'

    Et je pense pas que que ca ai un rapport avec le fait qu'il soit dans un div.

    Essaye avec :
    modele.disabled = "true";

    et
    modele.disabled = "";  // a la place de false
    0
  7. Jack
     
    J'ai déjà essayé, je suis dépité xD ...
    Merci de votre aide quand même.
    0
  8. Defouille Messages postés 404 Statut Membre 54
     
    Si tu fais
    modele.disabled = false; 

    ou
    modele.disabled = ""; 

    sans aucun test ça marche ?
    0
  9. Jack
     
    nop marche pas. Est ce que tu crois que je pourrais avoir faux des lorsque jessaye

    var marque = document.getElementById('marque');
    var modele = document.getElementByTagName('modele');
    if (marque.value <= 0){
    modele.disabled = true;
    }else{
    modele.disabled = false;
    }

    ?

    Merci
    0
  10. Defouille Messages postés 404 Statut Membre 54
     
    le getElementByTagName est pour récupérer une balise html du genre :
    document.getElementByTagName('INPUT'); 

    Donc oui tu auras faux :p

    Mais tu dois avoir un probleme j'ai testé chez moi :
    document.getElementById('input_superficie').disabled = true ;

    Sur un de mes selects et ca marche niquel...
    0
  11. Jack
     
    Ouf sa y'est j'ai réussi.

    J'ai donné un ID à mon 2eme select.

    dans mon js, j'ai rajouté une autre variable

    var marque = document.getElementById('marque');
    var modele = document.getElementById('modele');
    var mod = document.getElementById('mod');

    et dans mon if j'ai pas utilise 'modele' mais 'mod' et sa marche nikel.

    Je te remercie beaucoup de ton aide Defouille.
    0