Получение дважды той же функции

Я не могу понять, что происходит здесь. Когда я выбираю опцию $('#semestre'), все работает отлично. Затем я выбираю опцию $('#turma') и меняю ее значение. Все работает. Затем я снова меняю значение $('#semestre'), и все работает. Однако, когда я снова меняю значение $('#turma'), я получаю предупреждение дважды. И если я сделаю это снова, я получу три предупреждения и так далее. Что мне здесь не хватает?

$(document).ready(function(){
 $('.turma').hide();
 $('#semestre').change(function(){
 if($(this).val() != ''){
 $('.options_turma').remove();
 $('.turma').show();
 $.post('seleciona_turmas.php', {cd_turma: $(this).val()}, function(data){
 var item;
 data = jQuery.parseJSON(data);

 $.each(data.json, function(){
 item = "<option value="" +="" this["="" codigo']="" "'="">" + this['descricao'] + "</option>";
 $('#turma').append(item);
 });

 $('#turma').change(function(){
 if($(this).val() != ''){
 alert("OK");
 }else{
 alert('NULL');
 }
 });
 });
 }else{
 $('#turma').val('');
 $('.turma').hide();
 }
 });
});

Я старался быть ясным, но это путаный вопрос.

3 ответа

Вы привязываете событие изменения каждый раз, когда вы изменяете раскрывающийся список semestre. Вытащите #turma событие из semestre события изменения.

Как это

$('#semestre').change(function() {
 //Semestre code
});

$('#turma').change(function(){
 //Turma code
});


$('#turma').on('change', function() {
 // ....
});


Я думаю, что событие.change в теге #turma должно быть вне события.change в теге #semestre

licensed under cc by-sa 3.0 with attribution.