html - 在 Flask 中单击按钮时隐藏/显示表单

标签 html python-3.x python-2.7 flask backend

我正在学习创建一个 wtf Flask 网络表单,它是:

class Update(FlaskForm):
    username = StringField('Username', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired(), Email()])
    pic = FileField('Update Profile Pic', validators=[FileAllowed(['jpg','png'])])
    submit = SubmitField('Update')

我想做的是在单击按钮时将表单加载到同一页面上,而无需为表单创建单独的 html 页面。如何使用 Flask 或 HTML 来完成?如果必须对路线进行任何更改,请一并提及。

HTML代码:

<div class="content-section">
            <form method="POST" action="" enctype="multipart/form-data">
                {{ form.hidden_tag() }}
                <fieldset class="form-group">
                    <legend class="border-bottom mb-4">Account Info</legend>
                    <div class="form-group">
                        {{ form.username.label(class="form-control-label") }}

                        {% if form.username.errors %}
                        {{ form.username(class="form-control form-control-lg is-invalid") }}
                        <div class="invalid-feedback">
                            {% for error in form.username.errors %}
                            <span>{{ error }}</span>
                            {% endfor %}
                        </div>
                        {% else %}
                        {{ form.username(class="form-control form-control-lg") }}
                        {% endif %}
                    </div>
                    <div class="form-group">
                        {{ form.email.label(class="form-control-label") }}
                        {% if form.email.errors %}
                        {{ form.email(class="form-control form-control-lg is-invalid") }}
                        <div class="invalid-feedback">
                            {% for error in form.email.errors %}
                            <span>{{ error }}</span>
                            {% endfor %}
                        </div>
                        {% else %}
                        {{ form.email(class="form-control form-control-lg") }}
                        {% endif %}
                    </div>
                    <div class="form-group">
                        {{ form.pic.label() }}
                        {{ form.pic(class="form-control-file") }}
                        {% if form.pic.errors %}
                        {% for error in form.picture.errors %}
                        <span class="text-danger">{{error}}</span><br>
                        {% endfor %}
                        {% endif %}
                    </div>
                </fieldset>
                <div class="form-group">
                    {{ form.submit(class="btn btn-outline-info") }}
                </div>
            </form>

最佳答案

您可以正常加载表单,并将其可见性设置为隐藏。如果有人点击按钮,只需将表单的可见性更改为 visible

示例如下:

function toggle_display(){
  el = document.querySelector('.content_section');
  
  if(el.style.visibility == 'hidden'){
      el.style.visibility = 'visible'
  }else{
     el.style.visibility = 'hidden'
  }
}
<button onclick="toggle_display()">Toggle display</button>

<div class="content_section">See me no more</div>

编辑:

还有一点需要注意,visibility 属性设置为hidden 时会占用空间,即使它是隐藏的。要完全删除表单将占用的空间并隐藏表单,请将 display 属性设置为 none。要再次显示它,请将 display 设置为 block

关于html - 在 Flask 中单击按钮时隐藏/显示表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53587115/

相关文章:

javascript - 如何在 selectize.js 中设置选定的选项值

arrays - 为什么 BSON 序列化的 numpy 数组比原始数组大得多?

excel - 是否可以在 XlsxWriter 中为每次迭代创建一个新列

python - Python 中修饰函数和方法之间的行为差​​异

python - 是否有可能获得类似于 kwargs(python) 的传入参数字典?

javascript - 如何在使用 AJAX 时使用 header ?

javascript - 在子元素上应用悬停效果

python - 需要 Python 中 _xmlplus 的源代码

HTML5 离线缓存 javascript 下载但未刷新

python - 使用 Python 3.x 还是 2.x?