JQuery: Варианты выбора не попадают в короткий список при выборе радиокнопки
I want to provide the functionality to shortlist (reduce) the options inside select
on the basis of the value of the radio
button that is selected
В настоящее время я делаю это с помощью PlugIn в JQuery, который выглядит следующим образом -
jQuery.fn.filterOn = function (radio, values) {
return this.each(function () {
var select = this;
var options = [];
$(select).find('option').each(function () {
options.push({ value: $(this).val(), text: $(this).text() });
});
$(select).data('options', options);
$(radio).click(function () {
var options = $(select).empty().data('options');
var haystack = values[$(this).attr('id')];
$.each(options, function (i) {
var option = options[i];
if ($.inArray(option.value, haystack) !== -1) {
$(select).append(
$('<option>').text(option.text).val(option.value)
);
}
});
});
});
};
Я использовал этот плагин отсюда - https://stackoverflow.com/a/878331/11827709
Вы просто передаете словарь этому плагину, и он составляет для вас короткий список вариантов выбора
Если я передаю в эту функцию словарь, закодированный следующим образом -
$(function () {
$('#config').filterOn('input:radio[name=core]', {
'A': ['A1', 'A2', 'A3'],
'B': ['B1', 'B2', 'B3'],
'C': ['C1', 'C2', 'C3', 'C4', 'C5', 'C6']
});
});
Шорт-лист работает нормально
Как, если я выбираю 'A' в радиокнопке, я могу видеть только A1, A2 и A3 в меню выбора
Но если я заменю ее переменной, которую я передаю из представления Django и которая является словарем, то, похоже, она просто не работает
.Здесь я передаю переменную в HTML-файл -
context={'options_dict':options_dict}
return render(request,"submitnewCore.html",context)
Я распечатал его на терминале, и он содержит следующее -
{
'A': ['A1', 'A2', 'A3'],
'B': ['B1', 'B2', 'B3'],
'C': ['C1', 'C2', 'C3', 'C4', 'C5', 'C6']
}
Это обычный словарь Python
Сейчас, когда я передаю это в HTML-файл Django, он добавляет некоторые символы Unicode в начало и в начало каждой строки, что-то вроде '
Но я могу решить эту проблему, обратившись к переменной следующим образом "{{options_dict|safe}}"
.Таким образом, удаление этих символов Юникода
Сейчас я вывел эту переменную на консоль JavaScript, и она также содержит тот же словарь
Но когда я пишу этот код -
$(function () {
$('#config').filterOn('input:radio[name=core]',"{{options_dict|safe}}");
});
В меню выбора не отображаются варианты, основанные на выборе радиокнопки Меню выбора становится пустым, когда я выбираю любую радиокнопку
Есть идеи, почему это происходит?