【问题标题】:FLask-python: Dropdown selected value is not displayed when selected from dropdown?Flask-python:从下拉列表中选择时不显示下拉选择的值?
【发布时间】:2020-02-25 11:56:33
【问题描述】:

test.html 中有一个id testTime 和jinja2 模板time(从test.py - render_template 返回)

    <div>
        <select class="test-default" id="testTime">
        <option value=0>today</option>
        <option value=7>week</option>
        <option value=14>fortnight</option>
        <option value=30>month</option>
        </select>
        </div>

        {{ time }}

html中的脚本是,

function fetch_test_data(){
    let test = $("#testTime").val();
    axios({ 
        method:"get",
        url:"/test",
        params: {
            test
        }
    }).then(function (response) {
        $(document.body).html(response.data)
    }); 
}

向python文件发送值 test.py

        @app.route('/test', methods=["GET"])
        @login_required
        def transactions_view():
            time = (request.args.get("test"))

            print(time)  #this gives excepted output.

            return render_template("test.html", time=time)

这会正确地从下拉列表中返回值。 我正在通过 jinja 模板 {{ time }}time 渲染为 test.html

但只要值在 html 中更新,dropdown 就会刷新而不显示所选值。

正确的值返回到烧瓶并渲染回来。但是下拉可视化/列表显示第一个值而不是选定的值?

如何修改以显示所选值而不是默认值/第一个值?

编辑:1
如果预先填充了&lt;select&gt; 下拉菜单怎么办? 这是我的html

            <div>
               <select class="test-default" id="testTime">
                {% for option in options %}
                <option value={{ option }}>{{ option }}</option>
                {% endfor %}
            </select>
                </div>

还有test.py文件

        @app.route('/test', methods=["GET"])
        @login_required
        def transactions_view():
            options = ["0","7","14","30"]

            return render_template("test.html", options=options)

在上述情况下如何使用selected属性。

【问题讨论】:

    标签: javascript python html flask jinja2


    【解决方案1】:

    您必须添加选定的属性。

    <div>
        <select class="test-default" id="testTime">
        <option value=0 {% if time == 0 %} selected="selected" {% endif %}>today</option>
        <option value=7 {% if time == 7 %} selected="selected" {% endif %}>week</option>
        <option value=14 {% if time == 14 %} selected="selected" {% endif %}>fortnight</option>
        <option value=30 {% if time == 30 %} selected="selected" {% endif %}>month</option>
        </select>
    </div>
    

    【讨论】:

    • 添加的选择属性仍然相同的响应
    • 不是检查名称,而是检查 id,表示“今天”我会 {% if time == 0 %} selected="selected" {% endif %}
    • 做出改变还是一样的反应
    • 您应该检查 {{time}} 持有的值,然后检查。它可能是 0 或“0”或今天
    • 添加了一个编辑。如何对预填充的下拉菜单执行相同操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    • 2013-05-15
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多