0

それぞれに複数のチェックボックスがある複数のフォームがあります。すべてのフォームに対して、ページのどこかで単一の送信が提供されているため、クリックするとすべてのチェックボックス情報がプレビューされます

<form name="a1" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="x1">x1 
<input type="checkbox" id="add" name="check_list[]" value="x2">x2
<input type="checkbox" id="add" name="check_list[]" value="x3">x3
</form>

<form name="a2" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="y1">y1 
<input type="checkbox" id="add" name="check_list[]" value="y2">y2
<input type="checkbox" id="add" name="check_list[]" value="y3">y3
</form>

<form name="a3" action="start.php" method="post"> 
<input type="checkbox" id="add" name="check_list[]" value="z1">z1 
<input type="checkbox" id="add" name="check_list[]" value="z2">z2
<input type="checkbox" id="add" name="check_list[]" value="z3">z3
</form>

<div> <input type="submit" value="preview" onclick="addForm()"> </div>

どこにvalidateformいる

<script type="text/javascript">function addForm(){
document.forms["a1"].submit();
document.forms["a2"].submit();
document.forms["a3"].submit();
}

そしてstart.php_

<?php
if(!empty($_POST['check_list'])) {
    foreach($_POST['check_list'] as $check) {
            echo $check."<br/>"; 
    }
}
?>

問題は、関数によってすべてのフォームにデータを追加できないことです。PHP を使用してすべてのフォームから取得したaddForm() すべてのチェック ボックス情報を表示する方法を理解してください。

4

6 に答える 6

2

最初のフォーム「a1」で送信関数を呼び出すと、自動的にデータが start.php に送信され、他の 2 つのフォームは送信されません。最善の解決策: ajax

XMLHTTPRequest を使用すると、ページを離れることなくフォームを投稿して返信を受け取ることができます。また、3 つのフォーム送信すべての結果を組み合わせて一緒に表示することもできます。

于 2012-04-13T13:57:50.727 に答える
1

この方法では、一度に複数のフォームを送信することはできません。このアプローチを採用したい場合は、AJAX を使用する必要があります。これは、ブラウザーに複数のアクティブな要求を保持させる唯一の方法であるためです。

ただし、コードを見ると、複数のフォームが必要になる理由がわかりません。これを簡単に実行できるはずです:

<form name="a1" action="start.php" method="post"> 
  <input type="checkbox" id="add" name="check_list[]" value="x1">x1 
  <input type="checkbox" id="add" name="check_list[]" value="x2">x2
  <input type="checkbox" id="add" name="check_list[]" value="x3">x3
  <input type="checkbox" id="add" name="check_list[]" value="y1">y1 
  <input type="checkbox" id="add" name="check_list[]" value="y2">y2
  <input type="checkbox" id="add" name="check_list[]" value="y3">y3
  <input type="checkbox" id="add" name="check_list[]" value="z1">z1 
  <input type="checkbox" id="add" name="check_list[]" value="z2">z2
  <input type="checkbox" id="add" name="check_list[]" value="z3">z3
  <div><input type="submit" value="preview"></div>
</form>

...Javascript も必要ありません。

于 2012-04-13T13:54:23.110 に答える
1

問題の HTML コードの作成者である場合は、コードをリファクタリングして、すべてのチェックボックス送信ボタンを含むフォームを 1 つだけ作成することをお勧めします。スタイルに問題がある場合は、入力要素を適切な<fieldset>要素に配置するだけです。

そうではなく、自分で書いていない HTML コードで行き詰まっている場合は、次のことを行うことをお勧めします (ただし、これは適切な解決策ではありません)。

addForm()関数を編集<form>してドキュメントのどこかに 4 番目の要素を作成し、そのスタイルを に設定しdisplay: none;ます。次に、以前のフォームのすべてのチェックボックスをこの新しいフォームに追加または複製して、送信します。これにより、最初の HTML コードが適切に記述されている場合と同様に、PHP 側で処理できるチェックボックスのコレクションが得られるはずです。

于 2012-04-13T14:00:31.773 に答える
0

すべてのデータを start.php に送りたい場合は、単純に単一のフォームを使用する必要があります。

補足: 入力の id 属性をすべて「追加」に設定しないでください。id は一意である必要があります。

于 2012-04-13T13:54:50.833 に答える
0

コメントで述べているように、これに複数のフォームが必要な場合は、より広範な javascript が必要です。

1 つのフォーム送信 = 1 つの http リクエスト、3 は機能しませんが、できることはこれらすべてのフォームをバインドすることです。そのため、1 つが送信されると、すべてのフォームのすべての入力のデータを収集し、ロットをシリアル化し、それをGET リクエスト。フォームがそのまま送信されないように、デフォルトの動作を無効にすることを忘れないでください。

または、POST リクエストが必要な場合は、一時的なフォームを作成し、その中に正しい値を入力して入力を作成し、そのフォームを送信します。

于 2012-04-13T13:57:06.417 に答える
0

複数のフォームを送信するには、2 つの解決策があります。

1) Ajax リクエストを使用する 2) すべての情報を最終フォームに追加して送信します。これを行うには、jQuery または javascript を使用するだけです。

于 2012-04-13T14:02:34.143 に答える