ご注意!

この記事にはJavaScriptコードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

Numbersフィールドで許可される範囲を制限する方法

WPFormsで数値フィールドに入力できる範囲を制限しますか?数値入力に最小値と最大値を設定するには、いくつかの方法があります。

このチュートリアルでは、フォームに範囲制限を実装するための利用可能な方法を紹介します。

フォームの設定

まず、フォームを作成し、数値フィールドを組み込みましょう。フォームの作成方法についてガイダンスが必要な場合は、このドキュメントを参照して、手順を確認してください

フォームを作成し、少なくとも1つの数値フィールドを含むフィールドを追加することから始めます

基本的な範囲制限の設定

数値フィールドには、フィールドオプションパネルに範囲コントロールが含まれています。ユーザー入力を制限するには、範囲フィールドに最小値と最大値を入力するだけです。

数値フィールドの機能の詳細については、数値フィールドの使用方法に関するガイドをご覧ください。

高度な範囲コントロールの実装

偶数のみを強制したり、カスタム検証メッセージを表示したりするなど、特別な要件がある場合は、JavaScriptを使用してカスタム範囲コントロールを実装できます。コードスニペットの追加に関するガイダンスが必要な場合は、WordPressにカスタムコードを追加する方法に関するこのガイドを参照してください。

CSSクラスの追加

まず、フィールドにCSSクラスを追加して、この特定のクラスを持つ数値フィールドがある場合に、このスニペットが呼び出されるようにします。フィールドにCSSクラスを追加するには、フォームビルダーを開き、数値をクリックしてフィールドオプションパネルを開きます。次に、高度をクリックし、CSSクラスwpf-num-limitを追加します。

CSSクラスを追加すると、数値フィールドで許可される範囲が制限されます

コードスニペットの追加

次に、スニペットを統合しましょう。

この特定のスニペットは、wpf-num-limitというラベルのCSSクラスを持つ数値フィールドの最小値5と最大値20を強制します。

/**
 * Limit number range allowed for a Numbers field
 * Apply the class "wpf-num-limit" to the field to enable.
 *
 * @link https://wpforms.com/developers/how-to-limit-range-allowed-in-numbers-field/
 */
 
function wpf_dev_num_limit() {
    ?>
    <script type="text/javascript">
        jQuery(function(){

            // Enter 5 minimum (5) and maximum (20) amount for the number field 
            jQuery( '.wpf-num-limit input' ).attr({ 'min':5, 'max':20 } ); 
        });
 
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_num_limit', 30 );

フォームを保存した後、ユーザーがコードで定義された範囲外の数値を入力しようとすると、検証エラーが発生します。

スクリプトが追加されると、CSSクラスを使用して数値範囲を制限できるようになります

スニペットがサイトに追加されアクティブになると、このスニペットをトリガーするために、任意のフォームと任意のフィールドにCSSクラスを追加するだけで済みます。そのため、このスニペットは複数のフィールド、フォーム、および価格設定項目でも使用できます。

偶数のみの制限

偶数のみの選択を強制するためにステップ値を追加するには、次のコードスニペットを使用します。

/**
 * Limit number range in multiples of 2
 * Apply the class "wpf-num-limit" to the field to enable.
 *
 * @link https://wpforms.com/developers/how-to-limit-range-allowed-in-numbers-field/
 */

function wpf_dev_num_limit() {
    ?>
    <script type="text/javascript">
        jQuery(function(){
			
			// Minimum accepted number is 20
			// Maximum accepted number is 40
			// Only accept multiples of 2
			jQuery( '.wpf-num-limit input' ).attr( { 'min':20, 'max':40, 'step': 2 }  ); 
			
        });
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_num_limit', 30 );

複数のフォームでの作業

異なるフォームに固有の範囲を設定するために異なるCSSクラスを使用する場合は、次のスニペットを使用します。

この例では、wpf-num-limit-max-under–twentywpf-num-limit-max-under-fiftyを使用しています。

/**
 * Two different CSS classes in the same function
 * Apply the class "wpf-num-limit" to the field to enable.
 *
 * @link https://wpforms.com/developers/how-to-limit-range-allowed-in-numbers-field/
 */

function wpf_dev_num_limit() {
    ?>
    <script type="text/javascript">
        jQuery(function(){
			
			// Minimum set to 0, maximum set to 20
			jQuery( '.wpf-num-limit-max-under-twenty input' ).attr({ 'min':0, 'max':20 }); 
                        // Minimum set to 21, maximum set to 50
			jQuery( '.wpf-num-limit-max-under-fifty input' ).attr({ 'min':21, 'max':50 }); 
			
        });
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_num_limit', 30 );

エラーメッセージのカスタマイズ

ユーザーが無効な数値を入力したときに表示されるデフォルトのエラーメッセージを変更するには、次のコードスニペットを使用します。

/**
 * Limit number range allowed for a Numbers field
 * Apply the class "wpf-num-limit" to the field to enable.
 *
 * @link https://wpforms.com/developers/how-to-limit-range-allowed-in-numbers-field/
 */

function wpf_dev_num_limit() {
    ?>
    <script type="text/javascript">
        jQuery(function(){
 
            // Minimum 5, maximum 20
            jQuery( '.wpf-num-limit input' ).attr({ 'min':5, 'max':20 } ); // Define number limits
        });
 
		// Message to be displayed if the min and or max is not met
		jQuery.extend(jQuery.validator.messages, {
            max: jQuery.validator.format( "We apologize, there can only be a max allowance of {0}." ),
            min: jQuery.validator.format( "We apologize, there needs to be a minimum allowance of {0}." )
        });
		
    </script>
    <?php
}
add_action( 'wpforms_wp_footer_end', 'wpf_dev_num_limit', 30 );

これでプロセスは完了です!数値フィールドで許可される最小値と最大値の両方を正常に設定しました。必須フィールドインジケーターをカスタマイズしたい場合は、必須フィールドインジケーターの変更方法に関する記事を参照して詳細を確認してください。

参照アクション

wpforms_wp_footer_end