
①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、
入力フォームから受け取った情報を確認表示画面で表示して、さらに、「javascriptで同意のチェック」に同意して、ボタンをクリックしたら、情報が送信完了画面に送信されるようになっているのですが、「同意しない」に
チェックを入れて、ボタンをクリックすると、勝手に送信してしまいます。
これを阻止したいのですが、どうしたらよいでしょうか?
提示コードは②の確認表示画面コードです。
画像付きのボタンです。formタグ内にonsubmit="return false"を追加すると、
ボタンが反応しないです。
<?php
session_start();
if(isset($_SESSION['name'])){
$age = $_SESSION['age'];
$_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(48));
$token = htmlspecialchars($_SESSION['token'], ENT_QUOTES);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset ="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style type="text/css">
</style>
</head>
<body>
<form action ="LPmouth-completion-screen1.php" method ="post" name="doui_form">
<input type ="hidden" name ="token" value ="<?php echo $token ?>">
<div class="row">
<label class="col-sm-2 control-label" for="name">名前:<small><?php echo $name; ?></small></label>
</div>
<div class="radio_text">
<section>
<label class="radio_text">
<input type="radio" name="doui" value="suru" checked>同意する
</label>
<label class="radio_text">
<input type="radio" name="doui" value="shinai">同意しない
</label>
</section>
</div>
<div class="auto-style1">
<!--ボタンの画像-->
<button type="submit" id="soushin" name="submit" class="auto-style4" value="submit">
<img src="image2/25mouth.png" alt="確認画面へ" class="example8"/></button>
</div>
<script>
//ボタンをクリックした時に同意しないを選択した時にエラーを発生させる
var doui = document.getElementById('soushin');
doui.addEventListener('click', function() {
if (document.doui_form.doui.value != "suru") {
alert("同意してください。");
} else {
document.doui_form.submit();
}
})
</script>
</form>
</body>
</html>
No.2ベストアンサー
- 回答日時:
こんにちは
ご提示の状態だと button 要素の type が submit になっているので、ボタンを押したときにブラウザは送信しようとします。
ですので、スクリプトでアラートを出した後にも、制御が戻った段階でブラウザは(常に)送信します。
解決法としては、
1)ご提示のスクリプトのように、「チェックされていれば送信する」というロジックにするのなら、ボタン要素の typeを submit ではなく button などにしておくことで、ご希望のようになるでしょう。
ただし、button 要素の name 属性が submit のままだと、formのsubmitメソッドと被ってしまうため、上手く動作しません。
submit_button とするなど、別の名称にしておく必要があります。
2)ボタンの type は現状の submit のままとして、スクリプトを「チェックされていなければ、送信を中止する」ようにするのなら、ブラウザの送信処理を中止する必要があります。
function(e) {
のようにして、eventオブジェクトを受け取り、
e.preventDefault();
の1行を追加することで、送信処理をキャンセルできます。
(こちらの場合は、スクリプトからの submit() 処理は不要です。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セレクトを全て選択されていな...
-
二次元配列を使って順位をだす...
-
ローディングアニメーションの...
-
食材の期限を管理するためにGAS...
-
二次元配列の中の各行の要素を...
-
GASでGoogleフォームの自動返信...
-
タグを教えてください。
-
スマホ上で、左右スワイプで次...
-
【Google Apps Script】「ライ...
-
<tr>指定した表の行要素をボ...
-
フォームが空欄の時にフォーム...
-
読み込んだQRコードをフォーム...
-
jsonテキストデータの並び替え...
-
jsで、len~(__=C.value)]||val...
-
HTMLでサブフレームから親のス...
-
Q&A掲示板の入力フォームに文字...
-
Colorboxがうまく設置できません
-
初心者です。gulpでコンパイル...
-
vertical sliderをautoplayしたい
-
セレクトボックスを選んで点数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
jsで質問です。 formをsubmitし...
-
ラジオボタンを複数選択したと...
-
jqueryのselect2で検索欄の文字...
-
読み込んだQRコードをフォーム...
-
初心者です。gulpでコンパイル...
-
二次元配列の中の各行の要素を...
-
jsonテキストデータの並び替え...
-
セレクトボックスで配列を呼び...
-
【GAS】WEBアプリでハイパーリ...
-
ローディングアニメーションの...
-
jQueryで同じクラス名のものを...
-
二次元配列を使って順位をだす...
-
階層別の組織図の自動作成について
-
【Google Apps Script】「ライ...
-
画面遷移を行わずに同一ページ...
-
Adobe acrobat proでフォームを...
-
2段階プルダウンで1段階目の選...
-
二次元配列の全要素の全要素を...
-
定積分の近似値を計算する関数c...
おすすめ情報