質問編集履歴

3

修正

2021/06/04 06:40

投稿

mitrasi
mitrasi

スコア49

test CHANGED
File without changes
test CHANGED
@@ -570,6 +570,14 @@
570
570
 
571
571
  ### ご回答を受けての訂正後
572
572
 
573
+ やりたいことが実は質問当時は矛盾していて、
574
+
575
+ 未記入項目があり、ボタンを押したときにしたい挙動は「エラーメッセージを表示 かつ 完了画面には遷移しない」
576
+
577
+ であり、ボタンそのものを押せなくしたいわけではなかったと自覚しました。
578
+
579
+ よって、成功したコードをいかに訂正致します。
580
+
573
581
  ```js
574
582
 
575
583
  $(function () {
@@ -584,7 +592,7 @@
584
592
 
585
593
  //送信ボタンをクリック
586
594
 
587
- $("#js-submit").click(function () {
595
+ $("#contact input, #contact textarea").on("change",function () {
588
596
 
589
597
  //チェック用の変数sendflag これがすべてtrueであれば送信の許可を出す
590
598
 

2

<script> var sendFlag = true;</script>の追加

2021/06/04 06:40

投稿

mitrasi
mitrasi

スコア49

test CHANGED
File without changes
test CHANGED
@@ -58,6 +58,8 @@
58
58
 
59
59
  ```HTML
60
60
 
61
+ <script> var sendFlag = true;</script>
62
+
61
63
  <form data-aos="fade-up" name="myForm" method="post" target="dummyIframe" onsubmit="submitted=true;" action="ここにはURLを入れています" id="contact">
62
64
 
63
65
  <dl id="textSection">

1

ご回答を受けての訂正後

2021/06/04 02:50

投稿

mitrasi
mitrasi

スコア49

test CHANGED
File without changes
test CHANGED
@@ -563,3 +563,111 @@
563
563
  エディタ:VScode
564
564
 
565
565
  ブラウザ:クローム
566
+
567
+
568
+
569
+ ### ご回答を受けての訂正後
570
+
571
+ ```js
572
+
573
+ $(function () {
574
+
575
+ //jqueryを用いたバリデーション
576
+
577
+ //全てのアラート分を非表示にする クラスでまとめて
578
+
579
+
580
+
581
+ $(".alert").hide();
582
+
583
+ //送信ボタンをクリック
584
+
585
+ $("#js-submit").click(function () {
586
+
587
+ //チェック用の変数sendflag これがすべてtrueであれば送信の許可を出す
588
+
589
+ var sendFlag = true;
590
+
591
+
592
+
593
+ //一行入力フィールドのチェック
594
+
595
+ if (!$("#text").val()) {
596
+
597
+ //入力がない:アラート分を表示
598
+
599
+ $("#textSection .alert").show();
600
+
601
+ sendFlag = false;//入力がなければfalseに
602
+
603
+ } else {
604
+
605
+ //入力がある:アラート分を非表示
606
+
607
+ $("#textSection .alert").hide();
608
+
609
+ }
610
+
611
+
612
+
613
+ //複数行textareaのチェック
614
+
615
+ if (!$("#textarea").val()) {
616
+
617
+ //入力がない:アラート分を表示
618
+
619
+ $("#textareaSection .alert").show();
620
+
621
+ sendFlag = false;//入力がなければfalseに
622
+
623
+ } else {
624
+
625
+ //入力がある:アラート分を非表示
626
+
627
+ $("#textareaSection .alert").hide();
628
+
629
+ }
630
+
631
+
632
+
633
+
634
+
635
+ });
636
+
637
+ //ポリシーのチェック項目
638
+
639
+ $('#js-submit').prop('disabled', true);
640
+
641
+ $('#privacyCheck').on('click', function () {
642
+
643
+ if ($(this).prop('checked') == false) {
644
+
645
+ $('#js-submit').prop('disabled', true);
646
+
647
+ } else {
648
+
649
+ $('#js-submit').prop('disabled', false);
650
+
651
+ }
652
+
653
+ });
654
+
655
+
656
+
657
+ //フォームが送信されないようにするには以下のreturn falseが必要
658
+
659
+ //上記の各項目がすべてfalseになることなく、trueであればreturn false(送信の無効化)を改めて解除して、送信の有効化にする
660
+
661
+ if (sendFlag == false) {
662
+
663
+ return false;//falseであれば送信を許可しない(そうでなければ送信)
664
+
665
+ }
666
+
667
+
668
+
669
+
670
+
671
+ });
672
+
673
+ ```