web2py:可以通过一个“提交”按钮提交多个表单吗?

时间:2012-11-04 03:49:39

标签: javascript python html dom web2py

是否可以使用一个“提交”按钮提交多个表单?如果是这样,那么这样做的方法是什么?感谢。

1 个答案:

答案 0 :(得分:2)

严格来说,这不是web2py问题,而是HTML(DOM - 文档对象模型),并使用javascript问题操纵DOM。

您可以使用javascript一次性提交2个(或多个表单),点击一个按钮。

像这样: -

<form id="id1" ...> ...</form>
<form id="id2" ...> ...</form>

<button onclick="document.getElementById('id1').submit();document.getElementById('id2').submit();" />

当您需要在web2py应用程序中将两个单独的URL /函数发送到现在需要同时处理时,您可能会遇到问题?

正确的方法可能是您可能需要编写一个函数,将表单对象更改为字段集,作为单个表单的一部分。

在django中,formsets正是这样做,并将多个表单转换为仅属于模板中的1个单独HTML表单的字段集,因此原始&#34;多个表单&#34;成为前端单一形式的一部分。

像这样: -

<form method="post" action="">
    {{ formset.management_form }}
    {% for form in formset %}
        {{ form.id }}
        <ul>
            <li>{{ form.title }}</li>
            {% if formset.can_delete %}
                <li>{{ form.DELETE }}</li>
            {% endif %}
        </ul>
    {% endfor %}
</form>

web2py: -

http://www.web2pyslices.com/slice/show/1458/two-forms-on-one-page-with-custom-forms-to-update-record

def new():
    form = SQLFORM.factory(db.contact,db.groups)

    if form.accepts(request.vars):
        _id_user = db.contacts.insert(**db.contacts._filter_fields(form.vars))

        form.vars.contact = _id_user

        id = db.groups.insert(**db.groups._filter_fields(form.vars))

        response.flash = 'User registered successfully'
    return locals()

仅返回单个表单的web2py模板。