質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

Q&A

0回答

1302閲覧

MW WP FORM チェックボックス 複合条件

numakichi

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

0グッド

0クリップ

投稿2022/06/13 10:23

前提

WordPress 6.0
プラグイン:MW WP FORM 4.2.0

ここに質問の内容を詳しく書いてください。

23個あるチェックボックスのうち必要な項目にチェックを入れ、チェックが入った場合に重量を入力して送信ボタンで入力内容を送る入力フォームの作成をしています。
MW WP FORMのバリデーションルールを使い、送信ボタンを押した際に入力漏れがあるとエラー画面へ遷移し、入力漏れ箇所へエラーメッセージを出すようにしています。
ですが、入力漏れがない&エラーメッセージが出ていないのにも関わらず、送信ボタンを押しても送信することができません。

実現したいこと

23個のチェックボックスのうち、何も選択しなかった場合に『いずれかを選択してください』とエラーメッセージを出す。
いずれかを選択していた場合はエラーメッセージは出さない。
選択したチェックボックスの重量が入っていないと『重量を入力してください』とエラーメッセージを出す。

発生している問題

何も選択していないと『必須項目です。』と出る⇒狙い通り
イメージ説明

選択しているのでチェックボックス側はエラーメッセージは出ない⇒狙い通り
しかし、重量の入力がされていないのに重量側のエラーが出ない
イメージ説明

該当のソースコード

https://codepen.io/sarcan/pen/pjYjEx

function.php

1// チェックボックス用バリデーション 2function my_required_carrier1( $validation, $data ) { 3 $checkRule = $data['tonCheckbox']; 4 if( isset( $checkRule ) && $checkRule === 'がれき類(コンクリートガラ)' ) { 5 $validation->set_rule( 'ton数1', 'noEmpty', array( 'message' => '重量を記載してください') ); 6 } 7 $checkRule = $data['tonCheckbox']; 8 if( isset( $checkRule ) && $checkRule === 'がれき類(アスコンガラ)' ) { 9 $validation->set_rule( 'ton数2', 'noEmpty', array( 'message' => '重量を記載してください') ); 10 } 11 $checkRule = $data['tonCheckbox']; 12 if( isset( $checkRule ) && $checkRule === 'がれき類(その他)' ) { 13 $validation->set_rule( 'ton数3', 'noEmpty', array( 'message' => '重量を記載してください') ); 14 } 15 $checkRule = $data['tonCheckbox']; 16 if( isset( $checkRule ) && $checkRule === 'ガラスくず、陶磁器くず' ) { 17 $validation->set_rule( 'ton数4', 'noEmpty', array( 'message' => '重量を記載してください') ); 18 } 19 $checkRule = $data['tonCheckbox']; 20 if( isset( $checkRule ) && $checkRule === '廃プラスチック類' ) { 21 $validation->set_rule( 'ton数5', 'noEmpty', array( 'message' => '重量を記載してください') ); 22 } 23 $checkRule = $data['tonCheckbox']; 24 if( isset( $checkRule ) && $checkRule === '金属くず' ) { 25 $validation->set_rule( 'ton数6', 'noEmpty', array( 'message' => '重量を記載してください') ); 26 } 27 $checkRule = $data['tonCheckbox']; 28 if( isset( $checkRule ) && $checkRule === '紙くず' ) { 29 $validation->set_rule( 'ton数7', 'noEmpty', array( 'message' => '重量を記載してください') ); 30 } 31 $checkRule = $data['tonCheckbox']; 32 if( isset( $checkRule ) && $checkRule === '木くず' ) { 33 $validation->set_rule( 'ton数8', 'noEmpty', array( 'message' => '重量を記載してください') ); 34 } 35 $checkRule = $data['tonCheckbox']; 36 if( isset( $checkRule ) && $checkRule === '畳(繊維くず)' ) { 37 $validation->set_rule( 'ton数9', 'noEmpty', array( 'message' => '重量を記載してください') ); 38 } 39 $checkRule = $data['tonCheckbox']; 40 if( isset( $checkRule ) && $checkRule === '建設汚泥' ) { 41 $validation->set_rule( 'ton数10', 'noEmpty', array( 'message' => '重量を記載してください') ); 42 } 43 $checkRule = $data['tonCheckbox']; 44 if( isset( $checkRule ) && $checkRule === '廃油' ) { 45 $validation->set_rule( 'ton数11', 'noEmpty', array( 'message' => '重量を記載してください') ); 46 } 47 $checkRule = $data['tonCheckbox']; 48 if( isset( $checkRule ) && $checkRule === '動物性残さ' ) { 49 $validation->set_rule( 'ton数12', 'noEmpty', array( 'message' => '重量を記載してください') ); 50 } 51 $checkRule = $data['tonCheckbox']; 52 if( isset( $checkRule ) && $checkRule === '可燃混合廃棄物' ) { 53 $validation->set_rule( 'ton数13', 'noEmpty', array( 'message' => '重量を記載してください') ); 54 } 55 $checkRule = $data['tonCheckbox']; 56 if( isset( $checkRule ) && $checkRule === '不燃混合廃棄物' ) { 57 $validation->set_rule( 'ton数14', 'noEmpty', array( 'message' => '重量を記載してください') ); 58 } 59 $checkRule = $data['tonCheckbox']; 60 if( isset( $checkRule ) && $checkRule === '無分別混合廃棄物' ) { 61 $validation->set_rule( 'ton数15', 'noEmpty', array( 'message' => '重量を記載してください') ); 62 } 63 $checkRule = $data['tonCheckbox']; 64 if( isset( $checkRule ) && $checkRule === 'ガラス陶磁器くず(石綿含有)' ) { 65 $validation->set_rule( 'ton数16', 'noEmpty', array( 'message' => '重量を記載してください') ); 66 } 67 $checkRule = $data['tonCheckbox']; 68 if( isset( $checkRule ) && $checkRule === '廃プラスチック類(石綿含有)' ) { 69 $validation->set_rule( 'ton数17', 'noEmpty', array( 'message' => '重量を記載してください') ); 70 } 71 $checkRule = $data['tonCheckbox']; 72 if( isset( $checkRule ) && $checkRule === '混合(石綿含有)' ) { 73 $validation->set_rule( 'ton数18', 'noEmpty', array( 'message' => '重量を記載してください') ); 74 } 75 $checkRule = $data['tonCheckbox']; 76 if( isset( $checkRule ) && $checkRule === '廃石綿等(特管)' ) { 77 $validation->set_rule( 'ton数19', 'noEmpty', array( 'message' => '重量を記載してください') ); 78 } 79 $checkRule = $data['tonCheckbox']; 80 if( isset( $checkRule ) && $checkRule === '感染性廃棄物(特管)' ) { 81 $validation->set_rule( 'ton数20', 'noEmpty', array( 'message' => '重量を記載してください') ); 82 } 83 $checkRule = $data['tonCheckbox']; 84 if( isset( $checkRule ) && $checkRule === '水銀使用製品廃棄物(蛍光管等)' ) { 85 $validation->set_rule( 'ton数21', 'noEmpty', array( 'message' => '重量を記載してください') ); 86 } 87 $checkRule = $data['tonCheckbox']; 88 if( isset( $checkRule ) && $checkRule === '【購入】RC 砕石(再生コンクリート砕石 4-0)' ) { 89 $validation->set_rule( 'ton数22', 'noEmpty', array( 'message' => '重量を記載してください') ); 90 } 91 $checkRule = $data['tonCheckbox']; 92 if( isset( $checkRule ) && $checkRule === '【購入】AS 砕石(再生アスファルト砕石 4-0)' ) { 93 $validation->set_rule( 'ton数23', 'noEmpty', array( 'message' => '重量を記載してください') ); 94 } 95 return $Validation; 96 } 97 add_filter( 'mwform_validation_mw-wp-form-967', 'my_required_carrier1', 10, 2 );

試したこと

チェックボックス側に同じnameを使っていたので、重量側と対になるように被らないnameを振った。
例)name="tonCheckbox" ⇒ name="tonCheckbox1" (1~23まで)

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問