如何在神社循环中使用 javascript 变量

How to use a javascript var in a jinja loop

在我的 HTML 文件的 javascript 部分,我需要使用 jinja 循环遍历来自 flask 的 JSON。 但是,当索引达到已经存在的 javascript var 的值时,我需要打破循环。

var username_selected = $('#username').find(":selected").text();
 {% for user in users if user.username == username_selected -%}
    var key = {{ user.keynumber }};
    $('#originalkey').val(key);
 {% endfor %}

不幸的是,这不起作用,我认为它是因为 jinja 认为 username_selected 是 jinja 的一部分,但它不是。

我尝试用 JS var 值创建一个 jinja 变量,但没有用。

{% set username = namespace(username=username_selected) %} 

是否有任何解决方法或实际上不可能?

这是不可能的。 Python代码在服务器端运行,js在浏览器端运行。

我通过删除 jinja 循环中的 if 条件并将其替换为 javascript if 条件并在满足条件时从函数返回来修复它。

function update_userkey(){
    var username_selected = $('#username').find(":selected").text();
    {% for user in users -%}
    if( "{{user.username}}" == username_selected){
        var key = {{ user.keynumber }};
        $('#originalkey').val(key);
        return;
    }
    {% endfor %}
}

@Chris G in Pastebin 给出的代码。还要确保代码的可用性以供将来使用。

const users = {{ users | tojson | safe }}
$('#username').on('input', function () {
  const username_selected = $('#username').val();
  const user = users.find(user => user.username === username_selected);
  if (user) $('#originalkey').val(user.keynumber);
});