0

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:もっとコードが必要な場合は、私に注意してください。

値を使用した動的コンボボックス処理

4

1 に答える 1

0

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);
        }
    } 

});
于 2013-01-09T15:48:44.290 に答える