jQueryでラジオボタンの切り替え時にフォームの値を空にする方法

jQueryでラジオボタンの切り替え時にフォームの値を空にする方法

55 回閲覧されました

みなさんこんにちは、jonioです。

今回はラジオボタンとフォームが連動していてラジオボタンを切り替えた時に前のフォームの値が空っぽになってフォームを切り替えるまで前のフォームに値を入力することができなくなる方法の解説です。

デモ

下記の動画の挙動になります。

HTMLとCSS

下記のコードになります。

<div class="flex">
    <input type="radio" name="filter_type" value="year" id="form1" checked="checked">
    フォーム1 : <input type="text" placeholder="フォーム1" id="form1-input">
</div>
<div class="flex">
    <input type="radio" name="filter_type" value="month" id="form2">
    フォーム2 : <input type="text" placeholder="フォーム2" id="form2-input">
</div>

<style>
    .flex{
        display: flex;
        column-gap:20px;
        margin-top: 30px;
    }
</style>

jQuery

下記のコードになります。

<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script>
    (function($) {
        let $form1_radio = $('#form1');
        let $form2_radio = $('#form2');
        let $form1_input = $('#form1-input');
        let $form2_input = $('#form2-input');
        function toggleInputs() {
            if ($form1_radio.is(':checked')) {
                $form1_input.prop('disabled', false);
                $form2_input.prop('disabled', true);
                $form2_input.val(''); 
            } else if ($form2_radio.is(':checked')) {
                $form1_input.prop('disabled', true);
                $form2_input.prop('disabled', false);
                $form1_input.val('');
            }
        }
        toggleInputs();
        $('input[name="filter_type"]').on('change', function() {
            toggleInputs();
        });
    })(jQuery);
</script>

フォームの値を空にして値の入力ができないようになるのが8行目〜18行目です。

10行目の「.prop」はHTMLの属性を設定できます。

この場合はdisabled属性を設定していてfalseなのでフォームに値が入力ができるようになるという意味になります。

逆に11行目はフォームに値が入力できなくなるという意味です。

9行目〜12行目はフォーム1のラジオボタンをクリックした時でフォーム2の値を空っぽにして値の入力ができなくします。

13行目〜17行目はフォーム2のラジオボタンをクリックしたときでフォーム1の値を空っぽにして値の入力ができなくします。

19行目は画面を読み込んだ時に8行目のtoggleInputsメソッドが動作できるようにする為の設定です。

ラジオボタンの切り替えをした時にフォームに対する動作が起きるようにしますがその設定が20行目〜22行目です。