2

2 つのボタンを持つフォームと、押されたボタンに応じて 2 つの異なる値を取るパラメーターもあります。こんなこと書いたら

<form>
     <input type="hidden" name="method" value="saveXml"/>
     <input type="submit" name="save" value="SAVE"/>

     <input type="hidden" name="method" value="cancelled"/>
     <input type="submit" name="back" value="BACK"/> 
</form>

パラメータ「メソッド」は常に値「saveXml」でサーバーに渡されます。

また、タスクの他の条件により、これらのボタンを 2 つの別々のフォームに配置することはできません。どうすればこの問題を解決できますか?

4

3 に答える 3

0
  1. ボタンをハイパーリンクに変更します。
  2. ハイパーリンクがさまざまな JavaScript 関数を呼び出すようにします。
  3. 特定の JS 関数は、指定した値でフォームを送信します。

それ以外に、「非表示」の入力を 1 つだけ配置し、クリックされたボタンに応じて Javascript を使用してその値をオンザフライで変更できます。これは、javascript でも検出する必要があります。この場合、サブミットもボタンクリックではなく JS で行われます。

于 2012-08-23T13:29:49.527 に答える
0

フォームの投稿値で、ユーザーがsaveボタンをクリックすると、 のフィールドsaveと の値が表示されSAVEます。

ユーザーがbackボタンをクリックすると、値が になりますBACK

これを行うために隠しフィールドは必要ありません。

送信ボタンをクリックすると、ブラウザはユーザーがクリックした入力の値のみをサーバーに送信します。save(をクリックbackすると投稿されません。その逆も同様です)

于 2012-08-23T13:32:13.380 に答える
-1

@Matthewは正しいアドバイスをします。サンプルの php コードを次に示します (ロジックを理解するために、PSEUDOCODE と考えてください)。

[javascript history.back(-1) を使用した PHP の例ではなく、ロジックを反映するように編集]

if( $_POST['save'] ) :
    // your saveXml case
    ...
else if ($_POST['back']) :
    // your back case
    ...

この方法では、「保存」ボタンを押した場合にのみ保存が処理され (XML が保存されます)、「戻る」ボタンを押した場合にのみ戻る処理が行われます。JavaScript も隠しフィールドもありません。

于 2012-08-23T13:46:18.103 に答える