LoginSignup
41
33

More than 3 years have passed since last update.

jQuery フォームクリアボタンを作る。

Last updated at Posted at 2018-05-20

背景

検索条件の多い検索フォームでは入力内容をクリアしたいという要望がよくあります。
HTMLのresetでは初期値に戻るため、検索条件をクリアできない...!

目的

クリアボタン押下でフォームの値をクリアする(初期値に戻すのではない)

  • input, select, textareaがクリア対象。
  • button, submit, reset, hiddenはクリア対象外。
  • ラジオボタンは任意の値を初期値に設定する。

実装

HTML

<form action="#" method="POST">
    <input name="email" class="input" type="email" value="test@example.com">
    <input name="name" class="input" type="text" value="奥 華子">
    <input name="password" class="input" type="password" value="">
    <input name="age" class="input" type="number" value="40">
    <div>
        <input name="sex" type="radio" value="0" data-default> 指定しない
        <input name="sex" type="radio" value="1"><input name="sex" type="radio" value="2" checked></div>
    <div>
        <input name="sweets" type="radio" value="1"> きのこの山
        <input name="sweets" type="radio" value="2" checked> たけのこの里
    </div>
    <div>
        <label class="checkbox">
            <input name="hobby[]" type="checkbox" checked> 音楽
        </label>
        <label class="checkbox">
            <input name="hobby[]" type="checkbox"> 映画鑑賞
        </label>
        <label class="checkbox">
            <input name="hobby[]" type="checkbox"> 読書
        </label>
    </div>
    <div>
        <select name="prefecture">
            <option value="">選択してください</option>
            <option value="1">北海道</option>
            <option value="12" selected>千葉県</option>
            <option value="47">沖縄県</option>
        </select>
    </div>
    <textarea name="message" class="textarea"></textarea>
    <input name="hidden" type="hidden" value="この要素はクリアされないよ!">

    <div>
        <button name="action" value="send" type="submit">送信</button>
        <button name="action" value="clear" type="button" class="clear-button">クリア</button>
    </div>
</form>

JavaScript

"use strict";

$(function () {
    $(".clear-button").on("click", function () {
        clearForm(this.form);
    });

    function clearForm (form) {
        $(form)
            .find("input, select, textarea")
            .not(":button, :submit, :reset, :hidden")
            .val("")
            .prop("checked", false)
            .prop("selected", false)
        ;

        $(form).find(":radio").filter("[data-default]").prop("checked", true);
    }
});

デモサイト

ソースコード

補足

data-default のdata属性の付いたラジオボタンはクリアボタン押下時に選択されるようにしています。

41
33
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
33