2013-07-31 15 views
8

Sto cercando di rendere un'opzione selezionabile o non selezionabile in base alla scelta o meno di un'altra opzione. Ad esempio, se sono presenti le opzioni 1-6 e NON hanno scelto l'opzione 1 nella loro prima casella di selezione, quindi nella casella di selezione SAME e qualsiasi altra nel modulo, l'opzione 6 NON può essere scelta.abilita o disabilita l'opzione da select

Mi sono guardato intorno, ma tutto è come fare clic su un pulsante per raggiungere questo obiettivo.

Questo è il codice che ho (ho anche provato onclick)

<script type="text/javascript"> 
     function makeDisable(){ 
     var x=document.getElementById("mySelect2"); 
     x.disabled=true 
     } 
    function makeEnable(){ 
     var x=document.getElementById("mySelect2"); 
      x.disabled=false 
    }</script> 
    <form> 
     <select class="mySelect" id="mySelect"> 
     <option onchange="makeEnable()" value="Enable list">Apple</option> 
     <option onchange="makeDisable()" value="Disable list">Banana</option> 
     <option id="mySelect2" disabled="true">Orange</option> 
    </select> 
    </form> 

risposta

7

elementi di opzione non hanno evento "onchange", ma selezionare gli elementi fanno.

Ho scritto rapidamente un frammento di codice qui sotto. Puoi aggiungere più elementi selezionati. Quando scegli un'opzione in uno di questi elementi selezionati, non devi scegliere le opzioni allo stesso indice in altri elementi di selezione.

<script type="text/javascript"> 
    function toggleDisability(selectElement){ 
    //Getting all select elements 
    var arraySelects = document.getElementsByClassName('mySelect'); 
    //Getting selected index 
    var selectedOption = selectElement.selectedIndex; 
    //Disabling options at same index in other select elements 
    for(var i=0; i<arraySelects.length; i++) { 
    if(arraySelects[i] == selectElement) 
    continue; //Passing the selected Select Element 

    arraySelects[i].options[selectedOption].disabled = true; 
    } 
    } 
</script> 
<form> 
<select onchange="toggleDisability(this);" class="mySelect" id="mySelect1"> 
    <option>Apple</option> 
    <option>Banana</option> 
    <option>Orange</option> 
</select> 
<select onchange="toggleDisability(this);" class="mySelect" id="mySelect2"> 
    <option>Hamburger</option> 
    <option>Pizza</option> 
    <option>Cola</option> 
</select> 
</form> 
+0

mi era evitare di fare una cosa del genere lol. Ma grazie, immagino che questa sarà la strada allora! –

0

<script type="text/javascript"> 
 
    function toggleDisability(selectElement){ 
 
    //Getting all select elements 
 
    var arraySelects = document.getElementsByClassName('mySelect'); 
 
    //Getting selected index 
 
    var selectedOption = selectElement.selectedIndex; 
 
    //Disabling options at same index in other select elements 
 
    for(var i=0; i<selectElement.length; i++) { 
 
    if(arraySelects[i] == selectedOption) 
 
    continue; //Passing the selected Select Element 
 

 
    arraySelects[i].options[selectedOption].disabled = true; 
 
    } 
 
    } 
 
</script> 
 
<form> 
 
<select onchange="toggleDisability(this);" class="mySelect" id="mySelect1"> 
 
    <option>Apple</option> 
 
    <option>Banana</option> 
 
    <option>Orange</option> 
 
</select> 
 
<select onchange="toggleDisability(this);" class="mySelect" id="mySelect2"> 
 
    <option>Hamburger</option> 
 
    <option>Pizza</option> 
 
    <option>Cola</option> 
 
</select> 
 
</form>

+0

Aggiungi una spiegazione con la risposta per come questa risposta aiuta l'OP a risolvere il problema attuale –

Problemi correlati