前提
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー