Как отфильтровать динамическое поле со списком?

Я использую jQuery.

$('#ranges').on('change', '.combo', function() {
        var selectedValue = $(this).val();
        var s = $(this).parent("div").attr("class");
        if ($(this).find('option').size() > 2) {
            var newComboBox = $(this).clone();
            var thisComboBoxIndex = parseInt($(this).attr('data-index'), 10);
            var newComboBoxIndex = thisComboBoxIndex + 1;

        $('div.'+s+' .parentCombo' + thisComboBoxIndex).remove();

        if (selectedValue !== '') {
            newComboBox.attr('data-index', newComboBoxIndex);
            newComboBox.attr('id', 'combo' + newComboBoxIndex);
            newComboBox.addClass('parentCombo' + thisComboBoxIndex);
            newComboBox.find('option[val="' + selectedValue + '"]').remove();
            $('div.'+s).append(newComboBox);
        }

});

скрипка

Как я могу гарантировать, что это значение всегда выше, чем следующее? Может предупредить пользователя об этой проблеме или превратить этот combobox_text_value в «красный» или запретить пользователю отправлять.

На скрипке, например. если я выбираю 2 в первом комбо, я должен выбрать только 3 в следующем.

ps: заметьте, если вы указали больше кода.

Динамическая обработка combobox со значениями

0
nl ja de

1 ответы

См. Рабочий jsfiddle:

http://jsfiddle.net/JaVVe/22/

$('body').on('change', '.combo', function() {
    var selectedValue = $(this).val();

    if ($(this).find('option').size() > 2) {
        var $newComboBox = $(this).clone();
        var thisComboBoxIndex = parseInt($(this).data('index'), 10);
        var newComboBoxIndex = thisComboBoxIndex + 1;

        $('.parentCombo' + thisComboBoxIndex).remove();

        if (selectedValue !== '') {
            $newComboBox.data('index', newComboBoxIndex)
                        .attr('id', 'combo' + newComboBoxIndex)
                        .addClass('parentCombo' + thisComboBoxIndex)
                        .find('option')
            .filter(function(){return this.value<=selectedValue && this.value}).remove();
            if($('option',$newComboBox).size() > 1)
               $('body').append($newComboBox);
        }
    } 

});
0
добавлено
Его просто хорошая практика поставить $ перед переменной, ссылающейся на объект jquery. Таким образом, каждый раз, когда вы видите переменную, начинающуюся с $, вы знаете, что к ней можно применить метод jquery.
добавлено автор A. Wolff, источник
Спасибо за ответ. Почему вы изменили этот $ newComboBox ?
добавлено автор noneJavaScript, источник
Я использовал ваш подход, но когда я обрабатываю с помощью comboboxes, comboindex всегда то же самое и вызывает проблемы
добавлено автор noneJavaScript, источник
Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

CSS — русскоговорящее сообщество
CSS — русскоговорящее сообщество
1 502 участник(ов)

Сообщество любителей CSS Возникли проблемы с CSS? – пиши сюда, обсудим и предложим самое лучшее решение Работа: @css_ru_jobs Правила: https://teletype.in/@css_ru/r1EWtQ2w7 Приходите в наши чаты @javascript_ru и @frontend_ru Флуд: @css_flood

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing

css_jobs
css_jobs
26 участник(ов)

Чат для вопросов по css и html: @css_ru Флуд: @css_flood Канал с вакансиями и резюме: @css_jobs_feed

css_флуд
css_флуд
10 участник(ов)