2016-03-10 9 views
5

Ho due elementi di selezione. entrambi selezionano gli stessi valori. quando seleziono l'opzione dalla casella di selezione 1, dovrebbe disabilitare tutte le opzioni di selezione precedenti dalla seconda casella di selezione. Supponiamo ho questo selezionare:Come disattivare le opzioni selezionate precedenti quando si seleziona l'opzione dalla prima selezione

<select id="s1"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select> 

    <select id="s2"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    </select> 

Se seleziono valore 3 dalla scatola S1 si deve disattivare tutte le opzioni precedenti da selezionare s2. se seleziono il valore 2 da s1 dovrebbe disabilitare tutti i valori precedenti in s2.

Nota: Non dovrebbe disabilitare i valori successivi, solo quelli precedenti. Sto cercando una soluzione jquery.

+0

Come su ': selettore lt'? – Rayon

+0

puoi per favore fornire maggiori dettagli riguardo: lt? una guida da implementare: nel mio caso? –

risposta

7

Utilizzare :lt per selezionare elementi con un indice minore di quello specificato.

.index() restituirà la posizione dell'elemento dall'elemento corrispondente.

.not() escluderà l'elemento specificato dagli elementi restituiti.

$('select').change(function() { 
 
    $('select option').prop('disabled', false); 
 
    var index = $(this).find('option:selected').index(); 
 
    $('select').not(this).find('option:lt(' + index + ')').prop('disabled', true); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<select id="s1"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select> 
 

 
<select id="s2"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

Fiddle here

+0

un pezzetto di codice così sorprendente .. grazie, fammi implementare poi ... potrei aver fatto qualche errore durante l'elaborazione del mio caso ma questo mi ha dato un'idea ... volevo fare in ordine inverso. uso illecito: gt: D. grazie. ti ricambierò in un attimo. :) –

+0

@RayonDabre Ha imparato una nuova cosa ': lt'. +1. Entra nel club 9k :) –

+0

@RinoRaj, grazie amico;) – Rayon

0

Prova sotto il codice Se è utile per voi

$(document).ready(function() { 
$("#s1").change(function() { 
    var optVal = $(this).val(); 
    $("#s2 option").each(function() { 
     $(this).prop('disabled', false); 
     if (optVal > $(this).val()) { 
      $(this).prop('disabled', true); 
     } 
    }); 
});}); 
Problemi correlati