У меня есть три раскрывающихся списка, и я хочу, чтобы при выборе значения первого раскрывающегося списка это значение не отображалось во втором раскрывающемся списке.

==> guhanvj, <T extends Comparable<T>> означает, что <T> имеет верхнюю границу объектов Comparable<T>. Таким образом, <T> может иметь типы классов Byte, Character, Double, Float, Long, Short, String и Integer, которые все реализуют интерфейс Comparable<T> для естественного упорядочения.

0
задан Karl Stephen 20 March 2019 в 05:04
поделиться

1 ответ

Вам необходимо изменить данные для всех трех выпадающих меню select2. Прямо сейчас вы даете одинаковые данные для всех трех выпадающих. Здесь вы можете попробовать два подхода:

1.Создать массив с начальными значениями. Когда в первом раскрывающемся списке выбрано какое-то значение, скопируйте значения массива, кроме выбранного, в другой массив. Теперь используйте этот массив для второго выпадающего списка. Вы можете использовать событие onchange в раскрывающихся списках для обнаружения изменений и обновления массива для следующего раскрывающегося списка.

<select class="js-example-templating1" name="mem1" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
      <br><br>
      <select class="js-example-templating2" name="mem2" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
      <br><br>
      <select class="js-example-templating3" name="mem3" onchange="updateNextArray()">
        <?php
          $query = "select * from user";
          $query_result = query($query);
        while($row = fetch_array($query_result)) {
            echo "<option value='{$row['user_id']}'>{$row['user_id']} - {$row['name']}</option>";
        }
        ?>
      </select>
<script>
function updateNextArray(){
//update array here
}
function formatState (state) {
if (!state.id) {
return state.text;
}
var $state = $(
'<span>' + state.text + '</span>'
);
return $state;
};
$(".js-example-templating1").select2({
data: Array1,
templateResult: formatState
});
$(".js-example-templating2").select2({
data: Array2,
templateResult: formatState
});
$(".js-example-templating3").select2({
data: Array3,
templateResult: formatState
});
</script>

2.AJAX будет работать, если вы используете его правильно.

$(".js-example-templating").select2({
    ajax: {
        url: '../../subjects.json', // or api endpoint which supplies the array
        dataType: 'json',
    });
0
ответ дан DEVCNN 20 March 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: