2つの個別の送信ボタンを使用するWebサイトを開始しました。1つは入力されたデータを取得し、同じ画面に表示するための計算を行います。私はこれを正常に動作させました:
<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}
ここで、入力したデータを引き続き取得し、別のアドレスに移動する2番目の送信ボタンが必要です。これを行うエレガントな方法はありますか?
新しい送信ボタンに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>
ボタンのプロパティで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以前のバージョンではサポートされていません。
複数の送信ボタンを処理する最良の方法は、アクションスクリプトでswitch caseを使用することです
<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>
アクション/サーバー側スクリプト:
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;
}
?>
参照: W3Schools