Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask WTF:根据用户选择呈现的输入字段_Python_Forms_Flask_Flask Wtforms_Wtforms - Fatal编程技术网

Python Flask WTF:根据用户选择呈现的输入字段

Python Flask WTF:根据用户选择呈现的输入字段,python,forms,flask,flask-wtforms,wtforms,Python,Forms,Flask,Flask Wtforms,Wtforms,我正在尝试创建一个表单,用户在其中记录他们所做的操作。因为有太多的操作,它们现在被划分为多个类别,然后,根据用户选择的类别,相关的操作显示在第二个选择字段中 有些操作还需要提交数量,因此,当用户选择与数量相关的操作时,我希望呈现一个输入字段 我已经用JS试了几个小时,但没有成功 有没有一种方法可以使用Flask WTF和HiddenField或类似的东西来实现这一点 我的表单的HTML页面: {% extends "layout.html" %} {% block titl

我正在尝试创建一个表单,用户在其中记录他们所做的操作。因为有太多的操作,它们现在被划分为多个类别,然后,根据用户选择的类别,相关的操作显示在第二个选择字段中

有些操作还需要提交数量,因此,当用户选择与数量相关的操作时,我希望呈现一个输入字段

我已经用JS试了几个小时,但没有成功

有没有一种方法可以使用Flask WTF和HiddenField或类似的东西来实现这一点

我的表单的HTML页面:

{% extends "layout.html" %}

{% block title %}
    Record an action
{% endblock %}

{% block main %}
    <div class="padder form-padder">
        <form action="/record" method="post">
            {% from "_formhelpers.html" import render_field %}
            {{ render_field(form.action_cat) }}
            {{ render_field(form.action_desc) }}
            <div class="form-group" id="quantity_div">
                <label for="quantity"></label>
                <input id="quantity">
            </div>
            <button class="btn btn-success" type="submit">Record</button>
        </form>
    </div>

    <script>
        let cat_select = document.getElementById('action_cat')
        let desc_select = document.getElementById('action_desc')
        let hidden_field = document.getElementById('quantity')

        cat_select.onchange = function() {
            cat = cat_select.value;

            fetch('/action/' + cat).then(function(response) {
                response.json().then(function(data) {
                    let optionHTML = '';

                    for (let action of data.actions) {
                        optionHTML += '<option value"' + action.id + '">' + action.desc + '</option>';
                    }

                    desc_select.innerHTML = optionHTML;
                })
            })
        }

    </script>
{% endblock %}