1 つの「送信」ボタンで複数のフォームを送信することはできますか? もしそうなら、これを行う方法は何ですか?ありがとう。
1 に答える
これは厳密に言えば、web2py
質問ではなく、HTML (DOM - ドキュメント オブジェクト モデル) であり、DOM をjavascript
質問で操作します。
を使用すると、1 つのボタンをクリックして、2 つ (またはそれ以上) のフォームを一度に送信できますjavascript
。
このような:-
<form id="id1" ...> ...</form>
<form id="id2" ...> ...</form>
<button onclick="document.getElementById('id1').submit();document.getElementById('id2').submit();" />
web2py アプリケーションで、同時に処理する必要がある 2 つの別々の URL/関数にリクエストを POST する必要がある場合、問題が発生する可能性があります。
正しいアプローチは、おそらく、フォーム オブジェクトを 1 つのフォームの一部としてフィールドセットに変更する関数を作成する必要があるということです。
django では、フォームセットはまさにこれを行い、複数のフォームをテンプレート内の 1 つの HTML フォームのみに属するフィールドセットに変換するため、元の「複数のフォーム」はフロントエンドの 1 つの単一フォームの一部になります。
このような:-
<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 テンプレート 1 つのフォームのみに戻ります。