Ошибка заполнения варианта выбора Javascript

Я работаю над системой управления школой, и после работы над всеми ошибками я не могу исправить эту ошибку! В моей системе вы можете выбрать из раскрывающегося списка родителей ребенка (отец и мать), информация сохраняется в базе данных правильно, но при редактировании / просмотре возникает проблема.

После того, как вы закроете модальное окно для первого ребенка и перейдете ко второму, а затем обратно к первому, отец и мать покажут родительские данные предыдущего ребенка.

Я попытался очистить значение выпадающего списка select / unselecting до того, как он будет заполнен ajax, но безрезультатно. Вот код, и он выполняется только тогда, когда вы нажимаете кнопку редактирования в строке дочерних элементов:

$.ajax({
            url: base_url + 'student/fetchStudentData/'+studentId,
            type: 'post',
            cache: false,
            dataType: 'json',
            success:function(response){

                // UNSELECT THE DROP DOWNS TO RESET             
                //$('#editSex').find("option:selected").prop('selected',false);
                //$('#editFatherId').find("option:selected").prop('selected',false);
                //$('#editMotherId').find("option:selected").prop('selected',false);

                $("#editFname").val(response.fname);
                $("#editLname").val(response.lname);
                $("#editDob").val(response.dob);

                // NOW SELECT THE OPTION
                $('#editSex option[value='+ response.sex +']').attr('selected','selected');
                $('#editFatherId option[value='+ response.father_id +']').attr('selected','selected');
                $('#editMotherId option[value='+ response.mother_id +']').attr('selected','selected');

                $("#editAge").val(response.age);
                $("#editContact").val(response.contact);
                $("#editEmail").val(response.email);
                $("#editAddress").val(response.address);
                $("#editCity").val(response.city);
                $("#editCountry").val(response.country);
                $("#editRegisterDate").val(response.register_date);
                $("#editClassName").val(response.class_id);

                $("#editSectionName").load('student/fetchClassSection/'+response.class_id, function(i) {
                    $("#editSectionName").val(response.section_id);
                });             

                $("#student_photo").attr('src', base_url + response.image);

                $("#editClassName").unbind('change').bind('change', function() {
                    var class_id = $(this).val();
                    $("#editSectionName").load('student/fetchClassSection/'+class_id);
                });

HTML И PHP:

        <!-- FATHER -->
        <div class = "form-group">
          <label for = "editFatherId" class = "col-sm-4 control-label">Father</label>
          <div class = "col-sm-8">
            <select class = "form-control" name = "editFatherId" id = "editFatherId">
            <option value = "">Select</option>
            <?php foreach ($parentsDataMale as $key => $value) { ?>
              <option value = "<?php echo $value['parents_id'] ?>"><?php echo $value['fname'] . ' ' . $value['lname'] ?></option>
            <?php } // /forwach ?>
          </select>
          </div>                  
        </div>

        <!-- MOTHER -->
        <div class = "form-group">
          <label for = "editMotherId" class = "col-sm-4 control-label">Mother</label>
          <div class = "col-sm-8">
            <select class = "form-control" name = "editMotherId" id = "editMotherId">
            <option value = "">Select</option>
            <?php foreach ($parentsDataFemale as $key => $value) { ?>
              <option value = "<?php echo $value['parents_id'] ?>"><?php echo $value['fname'] . ' ' . $value['lname'] ?></option>
            <?php } // /forwach ?>
          </select>
          </div>                  
        </div>

ИЗОБРАЖЕНИЯ ВЫПУСКА: ПЕРВЫЙ РЕБЕНОК: Ошибка заполнения варианта выбора Javascript

ВТОРОЙ РЕБЕНОК: Ошибка заполнения варианта выбора Javascript

НАЗАД К ПЕРВОМУ: Ошибка заполнения варианта выбора Javascript

Пожалуйста, создайте Минимальный, полный и проверяемый пример вашей проблемы

Liam 05.09.2018 11:11

Я отредактировал вопрос. Спасибо

Enoch 05.09.2018 11:16

Где вы заполняете элементы select, такие как #editSex, #editLname and #editMotherId?

Muhammad Osama 05.09.2018 11:19

Они уже заполнены, и вы просто выбираете значения, поступающие из базы данных, или вы их тоже заполняете?

Muhammad Osama 05.09.2018 11:20

Единственное, что я могу представить - или лучше предположить - из вашего вопроса (источник HTML форм будет хорош), это то, что когда вы устанавливаете значения с помощью селекторов jQuery, может случиться так, что более одного элемента формы соответствует селектору. То есть $("#editAge").val(response.age) устанавливает значение для элементов формы все, имеющих идентификатор editAge. Я полагаю, у вас есть несколько элементов формы с одним и тем же идентификатором.

The Coprolal 05.09.2018 11:21

информация заполняется через PHP, массив данных предоставляет раскрывающийся список, я просто использую JS для выбора опции, полученной от AJAX

Enoch 05.09.2018 11:21

@TheCoprolal Я думал, что это так, но я могу просматривать любое количество записей, и данные верны, но как только я возвращаюсь к информации о дочерних элементах более одного раза, он просто показывает информацию о предыдущих дочерних элементах оттуда в

Enoch 05.09.2018 11:23

Это не MCVE. Нам нужны полные этапы воссоздания, так что ваш HTML и т. д. Добавленный вами блок кода лишь незначительно полезен. Представление о вашем HTML совершенно не помогает

Liam 05.09.2018 11:23

@Liam, я добавил HTML

Enoch 05.09.2018 11:26

Хорошо, в прошлый раз, пожалуйста, прочтите ссылка, которую я разместил, а также этот Как создать минимальный, полный и проверяемый пример. Вам необходимо ввести достаточно кода в вопрос, чтобы мы могли проверить вашу проблему и воспроизвести это. Иначе мы все только догадываемся. Это не поможет ни вам, ни нам. Мы не можем воспроизвести вашу проблему на основе того, что вы опубликовали. Создайте полностью рабочую скрипку jsfiddle.net Я предполагаю, что когда вы это сделаете, она либо сработает, либо вы сами обнаружите свою проблему.

Liam 05.09.2018 11:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
10
63
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны «отменить выбор» всех параметров перед тем, как «выбрать» тот, который использует данные json. Иначе вы рискуете выбрать более одного ... И это странно.

Также используйте логическое свойство вместо того, чтобы играть с атрибутом.

// NOW SELECT THE OPTION
$('#editSex option').prop('selected',false);
$('#editSex option[value='+ response.sex +']').prop('selected',true);
$('#editFatherId option').prop('selected',false);
$('#editFatherId option[value='+ response.father_id +']').prop('selected',true);
$('#editMotherId option').prop('selected',false);
$('#editMotherId option[value='+ response.mother_id +']').prop('selected',true);

Привет, палец вверх, ваш ответ решил проблему, это было близко к тому, что я делал, спасибо за помощь. Между вами, Мохаммедом и Лиамом, вы решили мои проблемы. Извините, что не очень помог в моем вопросе!

Enoch 05.09.2018 11:48

Такое поведение было нелегко объяснить ... Рад, что это помогло.

Louys Patrice Bessette 05.09.2018 11:51

Вместо использования

 $('#editSex option[value='+ response.sex +']').attr('selected','selected');
 $('#editFatherId option[value='+ response.father_id +']').attr('selected','selected');
 $('#editMotherId option[value='+ response.mother_id +']').attr('selected','selected');

Пытаться

$('#editSex').val(response.sex);
$('#editFatherId ').val(response.father_id );
$('#editMotherId ').val(response.mother_id );

Если вы хотите использовать то, что уже используете, попробуйте использовать опору для true.

    $('#editSex option[value='+ response.sex +']').prop('selected',true);
    $('#editFatherId option[value='+ response.father_id +']').prop('selected',true);
    $('#editMotherId option[value='+ response.mother_id +']').prop('selected',true);

Другие вопросы по теме