Disabled ne fonctionne pas pour un select

Résolu/Fermé
Jack - 19 févr. 2010 à 15:17
 Jack - 19 févr. 2010 à 16:10
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.

10 réponses

Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
19 févr. 2010 à 15:21
Bonjour,

que veux tu tester avec :
if (marque.value <= 0){
    modele.disabled = true;
}else{
    modele.disabled = false;
} 
?
0
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
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
19 févr. 2010 à 15:28
Alors teste :
if (marque.options.selectedIndex <= 0){
modele.disabled = true;
}else{
modele.disabled = false;
}
0
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

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

Posez votre question
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
19 févr. 2010 à 15:42
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
J'ai déjà essayé, je suis dépité xD ...
Merci de votre aide quand même.
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
19 févr. 2010 à 15:52
Si tu fais
modele.disabled = false; 

ou
modele.disabled = ""; 

sans aucun test ça marche ?
0
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
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
19 févr. 2010 à 16:04
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
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