11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je n'arrive pas à faire une simple sélection d'une option selon son Index dans un select...


<form name="application">
<select id="demande" name="demande">
   <option value="emploi">Un emploi</option>
   <option value="stage">Un stage</option>
</select>

<select name="poste" onchange="
    if(document.application.poste.value != 'def'){
         s = document.forms['application'].elements['demande'];
         s.selectedIndex = 0;
    }">
    <option value="def">Aucune</option>
    <option value="other">Autre</option>
</select>
</form>


Les selects sont factices juste pour que je comprenne le problème...

Je voudrais en fait que quand quelqu'un selectionne "Autre" dans le select "poste", ca sélectionne automatique "emploi" dans "demande".

Merci à l'âme charitable qui se penchera sur cette demande Smiley ravi

Apo.
Si tu regardes le DOM du select il faut cibler l'attribut "options" avant selectedIndex :

document.forms['application'].elements['demande'].options.selectedIndex = 0;
Sur un page alone avec seulement le formulaire, cela fonctionne.

Sur mon site en production, il ne se passe aucun changement... c'est étrange car les selects sont de simples copier/coller....

J'ai également essayé de le faire en jQuery, même soucis, aucun changement... :

$('#poste').change(function(){
   $('#demande option[value="emploi"]').attr("selected", "selected");
});


La page : -http://www.groupe-hacquart.fr/recrutement.html

Et ça se passe au niveau des deux select dans le formulaire.

Je ne trouve absolument pas ce qui pose le conflit dans le formulaire... Smiley confus
Je remonte mon sujet car je suis toujours bloqué sur mon soucis... Je ne trouve pas le conflit qui fait que mon select ne se change pas via javascript... Alors que si j'isole le code sur une page alone, cela fonctionne...

Aucune erreur également dans la console Javascript...
Je ne suis pas un PRO en "select", mais en prenant le problème autrement peut-être que tu y arriveras.

Voici la solution que je te propose: Puisque tu n'arrives pas a changer l'élément sélectionné dans un select, ne serait-ce pas plus simple de reconstruire totalement le select avec le bon élément sélectionné et remplacer l'ancien select par le nouveau select ?

Comme tu utilises jquery, un http://api.jquery.com/replaceWith/ devrait faire l'affaire Smiley cligne

Bon d'accord c'est pas très propre comme solution, mais si ça résout ton problème c'est déjà ça.