サポート » 使い方全般 » MW WP Fromのチェックボックスに選択個数制限を設けたい

  • MW WP Fromを使用して、オーディションのエントリーフォームを作成しました。

    「ジャンル・応募部門」という項目において、次の制約を設定したいと考えています。
    – ユーザーは7つの選択肢から、最大3つの選択肢を選ぶことができる

    この実装方法が分からず困っております。皆様の知恵をお借りできればと思います。

    ヘルプの必要なページ: [リンクを見るにはログイン]

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • MW WP Formではないですか?

    JavaScriptで制御するのが妥当だだと思います。

    こんにちは

    mwform_validation_rules フィルターフックでバリデーションルールを追加できるので、これを利用するのもいいかと思います。
    https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_validation_rules/

    下記は、チェックボックスの最大チェック数を検証するバリデーションルールを追加するサンプルコードです。

    functions.php 等に、

    if ( ! class_exists( "MW_WP_Form_Validation_Rule_MaxCheckBox" ) ) {
    	class MW_WP_Form_Validation_Rule_MaxCheckBox extends MW_WP_Form_Abstract_Validation_Rule {
    		protected $name = 'maxcheckbox';
    
    		public function rule( $key, array $options = array() ) {
    			$value = $this->Data->get( $key );
    			if ( ! MWF_Functions::is_empty( $value ) ) {
    				$separator = $this->Data->get_separator_value( $key );
    				$values = explode( $separator, $value );
    				if ( MWF_Functions::is_numeric( $options['max'] ) && count( $values ) > $options['max'] ) {
    					$defaults = array(
    						'max' => 0,
    						'message' => sprintf( '最大 %d 個まで', $options['max'] )
    					);
    					$options = array_merge( $defaults, $options );
    					return $options['message'];
    				}
    			}
    		}
    
    		public function admin( $key, $value ) {
    			$max = '';
    			if ( is_array( $value[$this->getName()] ) && isset( $value[$this->getName()]['max'] ) ) {
    				$max = $value[$this->getName()]['max'];
    			}
    			?>
    			<table>
    				<tr>
    					<td>最大チェック数</td>
    					<td><input type="text" value="<?php echo esc_attr( $max ); ?>" size="3" name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][max]" /></td>
    				</tr>
    			</table>
    			<?php
    		}
    	}
    }
    
    function mwform_validation_rule_maxcheckbox( $validation_rules ) {
    	$instance = new MW_WP_Form_Validation_Rule_MaxCheckBox();
    	$validation_rules[$instance->getName()] = $instance;
    	return $validation_rules;
    }
    
    add_filter( 'mwform_validation_rules', 'mwform_validation_rule_maxcheckbox' );
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「MW WP Fromのチェックボックスに選択個数制限を設けたい」には新たに返信することはできません。