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

Я использую 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
добавлено
Просмотры: 2
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, источник