2012-05-21 25 views
26

2つの独立した送信ボタンが必要なウェブサイトがあります。そのうちの1つは入力されたデータを受け取り、同じ画面に表示するための計算を行います。私はこれが正常に働いて持っている:複数の送信ボタンphp異なるアクション

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php"> 
<input type="submit" name="calc" value="Find Angle"> 

、その後、私が使用します。

if (!isset($_POST['submit'])){ 
Do actions, display calculations} 

今、私はまだ、彼らが入力したデータをつかむが、その後、別のアドレスに行く二送信ボタンをしたいです。これを行うエレガントな方法はありますか?

答えて

45

フォームのアクションを変更して送信する新しい送信ボタンにonclickメソッドを追加できます。

<script type="text/javascript"> 
    function submitForm(action) { 
    var form = document.getElementById('form1'); 
    form.action = action; 
    form.submit(); 
    } 
</script> 

... 

<form id="form1"> 
    <!-- ... --> 
    <input type="button" onclick="submitForm('page1.php')" value="submit 1" /> 
    <input type="button" onclick="submitForm('page2.php')" value="submit 2" /> 
</form> 
+0

これはrks!どうもありがとう!私は1時間かけて私とは少し違うケースを見て、それを理解することができませんでした。あなたは3秒でそれを得ました:-)私は学ぶべきことがもっとあります.. – Joegramming

+0

あなたは送信ボタンをクリックせずにEnterキーを押すだけでどうなりますか? –

+1

@IstiaqueAhmed:あなたがそれを変更しない限り、デフォルトでどのような動作をしていてもフォームを送信します。それがあなたが望むものでない場合は、 '

'要素の 'onsubmit'リスナーを介して、どんなふうふうな動作も設定できます。 – Travesty3

12

ボタンのプロパティでformaction = "page1.php"を使用すると、フォームアクションを変更できます。

<form id="form1" name="form1" method="post" onsubmit="" onreset="" action="programname.php"> 
    <input type="submit" name="calc" value="Find Angle"> 

    <input type="button" type="submit" formaction="page1.php">Action 0</button> 
    <input type="button" type="submit" formaction="page2.php">Action 1</button> 
</form> 

メモ:ボタンタグのformaction属性は、Internet Explorer 9以前のバージョンではサポートされていません。

demo_form.php

<?php 

switch($_REQUEST['subject']) { 

    case 'html': //action for html here 
       break; 

    case 'css': //action for css here 
       break; 

    case 'javascript': //action for javascript here 
         break; 

    case 'jquery': //action for jquery here 
        break; 
} 

?> 

参考:

+0

実際、HTML5標準では、['formaction'](http://www.w3.org/TR/html-markup/button.submit.html#button.submit.attrs.formaction)という属性があります。 –

+0

それは最もクリーンな解決策、感謝のようです! –

6

送信ボタンを複数に対処するための最良の方法は、アクションスクリプト

<form action="demo_form.php" method="get"> 

    Choose your favorite subject: 

    <button name="subject" type="submit" value="html">HTML</button> 
    <button name="subject" type="submit" value="css">CSS</button> 
    <button name="subject" type="submit" value="javascript">Java Script</button> 
    <button name="subject" type="submit" value="jquery">jQuery</button> 

</form> 

アクション/サーバーサイドスクリプトでスイッチケースを使用しています:W3Schools

+0

私はこの質問/答えはちょっと古いですが、ちょっとメモしておきます。この解決策は要求どおりに別のアドレスには行きません。 – Ezenhis

関連する問題