Eu preciso para alcançar o seguinte cenário.Eu fiz e ele funciona no firefox.Mas não no IE.
Sceario:
- Se eu selecionar o valor da primeira lista suspensa, as listas suspensas restantes deverão ocultar essas opções.
- Se eu desmarcar a opção da primeira lista suspensa, ela deverá estar disponível para os dropdowns restantes.
- Continua até o último dropdown.
eu tenho o seguinte código
HTML
<div>
<select data-label="Question 1" class="u85" id="test1">
<option value="Please select...">Please select...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
<div>
<select data-label="Question 1" class="u85" id="test2">
<option value="Please select...">Please select...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
<div>
<select data-label="Question 1" class="u85" id="test3">
<option value="Please select...">Please select...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
<div>
<select data-label="Question 1" class="u85" id="test4">
<option value="Please select...">Please select...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
Então eu tenho o jQuery seguinte
$(document).ready(function(){
var selectionlist=[];
$("select").change(function()
{
var currentid=$(this).attr("id");
$(this).val()!=="Please select..."?selectionlist[$(this).parent().index()]=$(this).val():selectionlist[$(this).parent().index()]="";
$("select").each(function(i){
var currentselectboxid=$(this).attr("id");
if($(this).val()!=="Please select...")
selectionlist[i]=$(this).val();
$("#"+$(this).attr("id")+" option").each(function(){
$.inArray($(this).val(),selectionlist)!=-1?$(this).hide():$(this).show();
});
});
});
});
Isso funciona bem no Firefox.Mas não no IE.Eu já encontrei algo no google.
JQuery Hide Option não funciona no IE e no Safari
Se eu desabilitá-lo, ele funciona bem. Mas minha exigência é ocultar e mostrar. Eu tento adicionar e remover as opções. Mas não obtendo sucesso.
Como posso obter o mesmo resultado como o firefox?
Desde já, obrigado.
Respostas:
0 para resposta № 1Esta resposta depende de onde você está recebendo o seuopções de, mas eu seguraria o conjunto em uma coleção. Cada um teria uma propriedade chamada "selecionada" e definida como "falsa" no início. Em seguida, criaria cada um dos menus suspensos usando essa coleção e criaria apenas a opção se o valor selecionado do item fosse definido como false. Quando uma lista suspensa muda, defina o valor "selecionado" para o item correspondente como "true" e reconstrua os dropdowns restantes, dessa forma você não terá que lidar com esconder / mostrar ou desabilitar uma opção.
0 para resposta № 2
Isso pode ajudar ...
Eu fiz um plugin jQuery que deve ajudá-lo. Com isso, você faria isso:
$("#selection1").hideOption("1");
$("#selection1").showOption("1");
Você pode ocultar e mostrar o quanto quiser - eles mantêm a ordem original. Funciona em todos os navegadores. Você pode ver isso neste exemplo: jsFiddle - Alternar opções suspensas
Você pode obter o Alternar plug-in de opções suspensas. Se você não gosta de plug-ins, apenas copie o código JavaScript dele para o arquivo JavaScript do seu próprio projeto. Veja o Leia os documentos link no plug-in para mais informações!