2016-06-06 4 views
0

Я пытаюсь отфильтровать одно выпадающее меню из списка другого в приложении Rails 4 с помощью jquery. В настоящее время, у меня есть:Параметры фильтрации динамических выпадающих списков с помощью jquery

$(document).ready(function(){ 
    $('#task_id').change(function(){ 
     var subtasks = $('#subtask_id').html(); //works 
     var tasks = $(this).find(:selected).text(); //works 
     var options = $(subtasks).filter("optgroup[label ='#{task}']").html(); // returns undefined in console.log 
     if(options != '') 
      $('#subtask_id').html(options); 
     else 
      $('#subtask_id').empty(); 
    }); 
}); 

Список задач является регулярное collection_select и список подзадач является grouped_collection_select. Оба они работают так, как ожидалось. Проблема в том, что даже с указанным выше кодом я не могу получить правильные подзадачи для отображения выбранной задачи.

ПРИМЕЧАНИЕ. Я также попробовал var tasks=$(this).find(:selected).val(), которые вернули правильный номер, но фильтрация параметров все еще не работает.

+0

Можете ли вы опубликовать свой HTML-вывод с выпадающими списками? – Tomanow

ответ

1

Попробуйте что-то подобное вместо этого (непроверено, но должно работать).

$(function() { 
    var $parent = $('#task_id'), 
     $child = $('#subtask_id'), 
     $cloned = $child.clone().css('display', 'none'); 

    function getParentOption() { 
     return $parent.find('option:selected'); 
    } 

    function updateChildOptions($options) { 
     $child.empty(); 
     $child.append($options); 
    } 

    $parent.change(function (e) { 
     var $option = getParentOption(); 
     var label = $option.prop('value'); // could use $option.text() instead for your case 
     var $options = $cloned.find('optgroup[label="' + label + '"]'); 
     updateChildOptions($options); 
    }); 
}); 
+0

Это отлично поработало! Благодаря! –

Смежные вопросы