Good evening,
In a precise view fill 3 select with no repetitions.
In the application form in a selective process, the student must select the first course option, in the second select the second course option and the first option, in the third select the third course option and different from the first and second options.
I have already implemented some codes and the most I could do was:
$(document).ready(function () {
segundaOpcao2();
$("#primeira_opcao").change(function () {
$("#segunda_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
$("#terceira_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
if ($(this).val() > 0) {
segundaOpcao($(this).val());
} else {
$("#segunda_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
$("#terceira_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
}
});
function segundaOpcao2() {
if ($("#primeira_opcao").val() > 0) {
segundaOpcao($(this).val());
} else {
$("#segunda_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
$("#terceira_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
}
}
$("#segunda_opcao").change(function () {
//$("#terceira_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
if (($("#segunda_opcao").val() != $("#primeira_opcao").val()) && $("#primeira_opcao").val() > 0 && $("#segunda_opcao").val() > 0) {
terceiraOpcao($("#primeira_opcao").val(), $("#segunda_opcao").val());
} else {
$("#segunda_opcao").empty().append("<option value=''>Selecione...</option>");
$("#terceira_opcao").attr("disabled", true).empty().append("<option value=''>Selecione...</option>");
}
});
function terceiraOpcao2() {
if ($("#segunda_opcao").val() > 0) {
segundaOpcao($(this).val());
} else {
primeiraOpcao2();
}
}
/*
// Primeira opção de curso
function primeiraOpcao() {
$("#segunda_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
$("#terceira_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
var dataID = $("#primeira_opcao").attr('id-data-opcao1');
$("#primeira_opcao").html("Carregando...");
$.post("/psei2018/primeira_opcao",
function (data) {
cursos = eval(data);
$("#primeira_opcao").empty().append("<option value=''>Selecione...</option>");
for (i = 0; i < cursos.length; i++) {
$("#primeira_opcao").append("<option value='" + cursos[i].id + "'>" + cursos[i].campus + " - " + cursos[i].sigla + " - " + cursos[i].nome + "</option>");
}
});
$("#primeira_opcao").removeAttr('disabled',true);
}
*/
// Segunda opção de curso
function segundaOpcao(idPrimeiraOpcao) {
//$("#segunda_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
//$("#terceira_opcao").attr('disabled', true).empty().append("<option value=''>Selecione...</option>");
var idPrimeiraOpcao = idPrimeiraOpcao;
var dataID = $("#segunda_opcao").attr('id-data-opcao2');
$("#segunda_opcao").html("Carregando...");
$.post("/psei2018/segunda_opcao", {idPrimeiraOpcao: idPrimeiraOpcao},
function (data) {
cursos = eval(data);
$("#segunda_opcao").removeAttr('disabled');
$("#segunda_opcao").append("<option value=''>Selecione...</option>");
for (i = 0; i < cursos.length; i++) {
if (idPrimeiraOpcao != cursos[i].id) {
$("#segunda_opcao").append("<option value='" + cursos[i].id + "'>" + cursos[i].campus + " - " + cursos[i].sigla + " - " + cursos[i].nome + "</option>");
}
}
});
}
// Terceira Opção d curso
function terceiraOpcao(idPrimeiraOpcao, idSegundaOpcao) {
var idPrimeiraOpcao = idPrimeiraOpcao;
var idSegundaOpcao = idSegundaOpcao;
var dataID = $("#terceira_opcao").attr('id-data-opcao3');
$("#terceira_opcao").html("Carregando...");
$.post("/psei2018/terceira_opcao", {idPrimeiraOpcao: idPrimeiraOpcao, idSegundaOpcao: idSegundaOpcao},
function (data) {
cursos = eval(data);
$("#terceira_opcao").removeAttr('disabled');
$("#terceira_opcao").html("<option value=''>Selecione...</option>");
for (i = 0; i < cursos.length; i++) {
if (idPrimeiraOpcao != cursos[i].id && idSegundaOpcao != cursos[i].id) {
$("#terceira_opcao").append("<option value='" + cursos[i].id + "'>" + cursos[i].campus + " - " + cursos[i].sigla + " - " + cursos[i].nome + "</option>");
}
}
});
//$("#terceira_opcao").removeAttr("disabled",true);
}
});
The fill of the select is partially working. The main problem occurs when some other form field fails and returns to the view the student resolves to change the selects. Then selects 2 and 3 do not work properly.