【问题标题】:Multiple checkboxes one submit button in multiple forms多个复选框一个提交按钮以多种形式
【发布时间】:2019-01-16 15:35:59
【问题描述】:

目前我的提交按钮只在一个对象上,因为它在 for 循环之外,因此它只会对底部文件进行计算。

但是,如果我将按钮放回循环中,它将为每一行放置一个提交按钮,但它无法对多个文件进行计算,所以我想知道如何为所有文件获取一个提交按钮文件,因此它将为每个文件进行计算(当前检查过的文件)

(之前搜索过这个问题,之前回答的问题都没有帮助)

HTML 文件(部分)

 {% for f in files %}
 <tr>
     <td>{{ f.key }}</td>
     <td>{{ f.last_modified | datetimeformat }}</td>
     <td>{{ f.key | file_type }}</td>
     <td>
         <form class="download-form" action="{{ url_for('myview.action') }}" method="POST">
             <input type="checkbox" name="key" value="{{ f.key }}">
{% endfor %}
             <button type="submit" name="submit" value="submit">Submit</button>
         </form>
     </td>
 </tr>

Python 文件(部分)

@expose('/', methods=['POST', 'GET'])
@appbuilder.app.route('/', methods=['POST', 'GET'])
def action(self):

    my_bucket = get_bucket()
    s = my_bucket.objects.all()
    t = getmyobject()

    return render_template(
        'page.html',
        my_bucket=my_bucket,
        base_template=appbuilder.base_template,
        appbuilder=appbuilder,
        page=s, t=t
    )

【问题讨论】:

    标签: python html flask flask-appbuilder


    【解决方案1】:

    你把表单和for循环弄乱了,试着像这样把for循环放在表单标签里面,然后在表单里面和for循环关闭后添加按钮。

     <form class="download-form" action="{{ url_for('myview.action') }}" method="POST">
         {% for f in files %}
             <tr>
                 <td>{{ f.key }}</td>
                 <td>{{ f.last_modified | datetimeformat }}</td>
                 <td>{{ f.key | file_type }}</td>
                 <td><input type="checkbox" name="key" value="{{ f.key }}"></td>
             </tr>
        {% endfor %}
        <button type="submit" name="submit" value="submit">Submit</button>
    </form>
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      如果您不将按钮放在表单中,而是在您的表格之后:

      {% for f in files %}
       <tr>
           <td>{{ f.key }}</td>
           <td>{{ f.last_modified | datetimeformat }}</td>
           <td>{{ f.key | file_type }}</td>
           <td>
                <input type="checkbox" name="key" value="{{ f.key }}">
           </td>
       </tr>
      {% endfor %}
      <button type="submit" name="submit" value="submit">Submit</button>
      

      然后你可以用JS收集每个选中的输入字段的值并提交它们。

      要提交,您可以在按钮上使用 onclick 事件。

      【讨论】:

      • 我需要这条线,所以我可以将我的代码连接到按钮,form class="download-form" action="{{ url_for('myview.action') }}" method="发布">
      • 如果给按钮的onclick事件绑定一个js函数,就可以在函数内部发起HTTP请求。例如 jquery $.get() or $.post().
      • 没有别的办法,我不知道怎么用jquery
      • 不用jquery也可以发起HTTP请求,看这个帖子:stackoverflow.com/questions/247483/…
      猜你喜欢
      • 2015-10-02
      • 2018-01-19
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 2020-02-18
      • 2015-04-17
      相关资源
      最近更新 更多