2013-07-09 7 views
22

Sto cercando di svuotare selezionare le opzioni quando:rimozione di tutte le opzioni di casella di selezione tranne il 1 ° opzione

id "MFare clic" è selezionata, di id "SFare clic su", "CFare clic su" e "srClick" verrà svuotato.

id "sClick" è selezionato, ID "cClick" e "srClick" verranno svuotati.

id "cClick" è selezionato, id "srClick" sarà svuotato.

<form action="javascript:void(0);" method="POST" id="lForm"> 
<table> 
    <tr> 
     <td> 
      <select name="module" id="mClick"> 
       <option value="">Select Mod</option> 
       <option value="1">Mod 1</option> 
       <option value="2">Mod 2</option> 
       <option value="3">Mod 3</option> 
      </select> 
     </td> 
     <td> 
      <select name="state" id="sClick"> 
       <option value="">Select State</option> 
       <option value="1">State 1</option> 
       <option value="2">State 2</option> 
      </select> 
     </td> 
     <td> 
      <select name="city" id="cClick"> 
       <option value="">Select City</option> 
       <option value="1">City 1</option> 
       <option value="2">City 2</option> 
      </select> 
     </td> 
     <td> 
      <select name="services" id="srClick"> 
       <option value="">Select Services</option> 
       <option value="1">Services 1</option> 
       <option value="2">Services 2</option> 
      </select> 
     </td> 
    </tr> 
</table> 

nello scenario 3, ho usato questa funzione, ma è cancellato tutto, tranne l'ultimo di selezione. Qualche idea è quello che mi manca? Grazie

$('#lForm select[id!="mClick"] select[id!="sClick"] select[id!="cClick"] option[value!=""]').remove().end(); 
+0

errore di battitura dispiace, rimosso, ma ancora non funzionano. –

+1

i tuoi ID elemento sono diversi, ad es.'MakeClick' in jQuery e' mClick' in HTML – Satpal

+0

Se sono svuotati, allora come mai ripopolata? –

risposta

5

Il modo più semplice per cancellare le opzioni nel modo in cui si sta descrivendo è utilizzare options.length = 1. Inoltre, puoi sfruttare il fatto che ogni passaggio cancella quelli che lo seguono logicamente, in modo che tu debba solo dichiarare un singolo gestore di modifiche.

$('#lForm select').on('change', function() { 
    if (this.selectedIndex > 0) { 
    var $others = $(this).closest('table').find('select'), 
    current = $others.index(this); // find current 

    while (++current < $others.length) { 
     // for each following drop down 
     $others.get(current).options.length = 1; 
    } 
    } 
}); 

Demo

Non sono sicuro di come si sta andando a ripopolare il menu a discesa però :)

+0

funziona! molte grazie! andando a popolarlo con GET AJAX, semplicemente non voleva server per inviare una

+0

@ user2035819 Sì, questo è come gli array siano "tagliati" in JavaScript :) –

16

è possibile utilizzare il selettore superiore :gt() di jQuery per questo

$('#lForm select[id!="makeClick"] select[id!="stateClick"] select[id!="cityClick"] option:gt(0)').remove().end(); 

Questo eliminerà tutte le opzioni che sono maggiori di 0

+0

cambiato in: gt() http://jsfiddle.net/qVaaJ/6/ gli ultimi 2 di selezione, sono totalmente svuotato. quando una mod è selezionata. Sto cercando di mantenere tutti value = "" visibile –

13

È possibile utilizzare not(:first)

$('#lForm select[id!="makeClick"] select[id!="stateClick"] select[id!="cityClick"] option:not(:first)').remove().end(); 
+0

città e lo stato vengono completamente svuotati quando viene selezionata una mod. http://jsfiddle.net/qVaaJ/8/ –

1

Prova questo

$('#lForm select').change(function(){ 
    var $selects = $('#lForm select'); 
    var idx = $selects.index(this); 

    // Use `val` function to clear the selected values or Use `remove` function to remove the element. 
    $selects.filter(':gt(' + idx +')').val(''); 

}); 
47

Prova questa

yourSelect.find('option').not(':first').remove();

0

asssign classe generale al tuo Dropdow n poi

$ ('. opzione generale [valore! = ""]'). remove();

questo rimuoverà tutte le opzioni tranne primo il cui valore è vuoto auguriamo che questo aiuta

5

E 'un lavoro

$('#mClick').change(function() { 
    $('#sClick, #cClick, #srClick').find("option:gt(0)").remove(); 
}); 
$('#sClick').change(function() { 
    $('#cClick, #srClick').find("option:gt(0)").remove(); 
}); 
$('#cClick').change(function() { 
    $('#srClick').find("option:gt(0)").remove(); 
}); 
2

ero alla ricerca di un codice di linea, quello che ho trovato, dopo un sacco di ricerca è il codice di linea semplice e migliore per rimuovere tutto tranne prima.

JQuery,

$('#ddlId option:not(:first)').remove(); 
Problemi correlati