• ベストアンサー

フォームの「キャンセル」ボタンを押すと登録されてしまう…

以下のようなフォームをつくっているのですが、どうもキャンセルを押すと登録されてしまいます。ごうしたらよいでしょうか? <form id='next' name='next' method='post' action='XXX.php'> <INPUT name='next' type='submit' id='next' value='登録する'> <INPUT type='button' value=' 戻る ' onClick='history.back()'> <INPUT name='cancel' type='submit' value='キャンセル' onClick='index.html'>

質問者が選んだベストアンサー

  • ベストアンサー
noname#23734
noname#23734
回答No.3

「PHP内で記述」がイマイチ理解できませんし、そうしているからformが正常に機能しないと言う理屈も良く理解できませんが、他の方法なら <form id='next' name='next' method='post' action='XXX.php'> <INPUT name='next' type='submit' id='next' value='登録する'> <INPUT type='button' value=' 戻る ' onClick='history.back()'> <a href='index.html'>キャンセル</a> </form> <form id='next' name='next' method='post' action='XXX.php'> <INPUT name='next' type='submit' id='next' value='登録する'> <INPUT type='button' value=' 戻る ' onClick='history.back()'> <span onclick='window.location="index.html"'>キャンセル</span> </form> 単純にキャンセルをクリックするとindex.htmlに飛びます。 PHPは良く解りませんが、サーバーサイドスクリプトって最終的にはユーザーエージェントにHTMLを渡しているんじゃないんですか?

saak888
質問者

補足

ご返答ありがとうございます。参考にさせていただきます。 >PHP内で記述 とは『 <?PHP ~ ?> 』内に記述するという意味です。PHPのスクリプト内に表記すると、言ったほうが正確なのかもしれません。わかりずらくて、すいませんでした。 >PHPは良く解りませんが、サーバーサイドスクリプトって最終的にはユーザーエージェントにHTMLを渡しているんじゃないんですか? 一応、そういうことになるわけですが、PHPのスクリプト内に記述することで、「"」が使えなくなったり、通常のHTML表記のままだと、何かと問題が発生し、通常通り動作しないことがあります。

その他の回答 (2)

noname#23734
noname#23734
回答No.2

<form id='next' name='next' method='post' action='XXX.php' onreset='window.location="index.html"'> <INPUT name='next' type='submit' id='next' value='登録する'> <INPUT type='button' value=' 戻る ' onClick='history.back()'> <INPUT name='cancel' type='reset' value='キャンセル'> </form> こうしたら良いと思います。 余分なことですがidやnameに同じ名前を使うと何かとトラブルの元ですよ。

saak888
質問者

補足

ご返答ありがとううございます。下記と同様の理由のためか、うまく動作しません…その他、方法あるでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まずサーバーにデータを送る必要がないならsubmitする 必要はないでしょう。submitをやめてbuttonで処理してください。 それとonClickでファイル名を書かれても普通に文法違反ですね。 location.hrefを書き換えてください。 <INPUT name='cancel' type='submit' value='キャンセル' onClick='index.html'> ↓ <INPUT name='cancel' type='button' value='キャンセル' onClick='location.href="index.html"'> submitで処理したいなら、一度XXX.phpでデータを受け取り $_POST["cancel"]の値を見てindex.htmlにとばすという 手が妥当かと思います

saak888
質問者

補足

ご回答ありがとうございます。しかし、どうもうまくいきませんね… PHP内で記述しているためかもしれませんが… その他、方法あるでしょうか?