gpt4 book ai didi

javascript - 如何根据我的 jinja for 循环创建多个动态选择器?

转载 作者:行者123 更新时间:2023-12-02 23:36:59 25 4
gpt4 key购买 nike

目前,我正在尝试根据用户输入创建多个动态选择器下拉列表。此输入将通过 for 循环中的 jinja 传递到我的 HTML 页面。

基于for循环,我将创建相应数量的下拉列表对。

最重要的是,我还计划重新配置每个下拉列表的 id,以便我可以轻松地在 Flask 代码中检索它们的值。我尝试在 javascript 中编写 for 循环来修改 id。

我尝试编写一些 javascript 来执行这些功能,但似乎不起作用。其实对javascript不太熟悉。

HTML 代码

<form method="POST">
{% for i in no_of_filters: %}
<select id="col" class="selectpicker" onchange='refreshList(event,'{{ i+1|string }}')';>
{% for c in cols: %}
<option value="{{c}}">{{c}}</option>
{% endfor %}
</select>
<select id ="val" class="selectpicker" multiple data-live-search="true">
{% for uv in unique_val: %}
<option value="{{uv}}">{{uv}}</option>
{% endfor %}
</select>
{% endfor %}
<input type="submit">
</form>
<script>
console.clear()

var colElements = document.querySelectorAll('#col');
var valElements = document.querySelectorAll('#val');

for (var i = 0; i < colElements.length; i++)
colElements[i].id = 'col' + (i+1);

for (var j = 0; j < valElements.length; j++)
valElements[i].id = 'val' + (j+1);


function refreshList(event, i){
var col_select = document.getElementById('col'.concat(i));
var uv_select = document.getElementById('val'.concat(i));

column = col_select.value;

fetch('/col/' + column).then(function(response) {
response.json().then(function(data) {
var optionHTML = ' ';
for (var uv of data.unique_val) {
optionHTML += '<option value="' + uv.id + '">' + uv.value + '</option>';
}
uv_select.innerHTML = optionHTML;
$('#val'.concat(i)).on('change', function() {
$('#val'.concat(i)).selectpicker('refresh');
});
})
});
}



</script>

预期:如果 no_of_filters = 7,for 循环应创建 7 对动态选择选择器下拉字段,并通过 javascript 配置 id

实际:只创建1对select picker下拉列表,没有配置id

最佳答案

选择具有相同的 id。尝试为每个选择添加不同的 id,如下所示:

HTML:

<form method="POST">
{% for i in no_of_filters: %}
<select id="col-{{i}}" class="selectpicker col"
onchange='refreshList(event,'{{ i+1|string }}')';>
{% for c in cols: %}
<option value="{{c}}">{{c}}</option>
{% endfor %}
</select>
<select id ="val-{{i}}" class="selectpicker val"
multiple data-live-search="true">
{% for uv in unique_val: %}
<option value="{{uv}}">{{uv}}</option>
{% endfor %}
</select>
{% endfor %}
<input type="submit">
</form>

js:

<script>
console.clear()

var colElements = document.querySelectorAll('select.col');
var valElements = document.querySelectorAll('select.val');

for (var i = 0; i < colElements.length; i++)
colElements[i].id = 'col-' + (i+1);

for (var j = 0; j < valElements.length; j++)
valElements[i].id = 'val-' + (j+1);


function refreshList(event, i){
var col_select = document.getElementById('col-'.concat(i));
var uv_select = document.getElementById('val-'.concat(i));
// same logic
}



</script>

关于javascript - 如何根据我的 jinja for 循环创建多个动态选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56248107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com