0
Good night,
In a view I need to fill 3 select without repeats.
In the application form in a precise selection process that the student chooses in the first select the first course option, in the second select the second course option and different from the first option, in the third select choose the third course option and different from the first and second options.
I’ve already implemented some codes and the most I could get is this:
$(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 working partially. The main problem occurs when some other field of the form gives error and return to the view the student resolve to change the selects again. Then the selects 2 and 3 no longer work correctly.
See if this is it: the first option appears the normal options and the other disabled, when selecting one, loads via ajax the second option, selecting the second option loads tb via ajax the third. If he changes the second one, he must press the third one again. If it changes the first one, the second one must be reloaded and the third one disabled.
– Sam