Bootstrap3でtextフィールド内にclearボタンを設置する技

テキストフィールドをクリアするボタン

PCサイトのUIではあまり気になりませんが、スマホサイトのUIの場合、一旦テキストフィールド(input type=”text”)に入力したテキストをクリアさせるのは、ユーザーにとって手間ですよね。

クックパッドなどでは親切に「×」ボタンを用意してクリアできるようになっています。
Bootstrapベースのサイトでもできるのかどうか調べると、素晴らしいサンプルが stackoverflow で紹介されていました。

参考:How do I clear a search box with an ‘x’ in bootstrap 3?

class=”btn-group” でくくる

それが「テキストフォームと削除用のGlyphiconボタン要素をbtn-grpupでまとめる」というもの。
まずはHTMLコードから。

<div class="btn-group">
    <input type="text" id="keywords" class="form-control" placeholder="キーワード入力">
    <span class="searchclear glyphicon glyphicon-remove-circle"></span>
</div>

次に以下のCSSを適用します。

.searchclear {
    position: absolute;
    right: 5px;
    top: 0;
    bottom: 0;
    height: 14px;
    margin: auto;
    font-size: 14px;
    cursor: pointer;
    color: #ccc;
}

こうすると以下のようなUIになります。

テキストフィールドをクリアするボタン

このレイアウトの素晴らしいところは、テキストフィールドを「input-sm」にしたり「size」属性などで幅を短くしてもちゃんと配置されるところです。

ボタンクリック時の挙動をjQueryで実装

次にこの「×」ボタンが押された際の挙動を記述します。
これは最初にstackoverflowで書かれていたサンプルコードをさらに汎用的に、複数の箇所で使えるようにアレンジしたものです。

$(function(){
    $('.searchclear').click(function(){
        $(this).parent().find('input').val('');
    });
});

説明すると、parent()で「btn-group」要素を参照し、find() でテキストフィールドを指定し、クリアしています。
動作しているところを見てみましょう。

これで使い勝手の良いテキストフォームになりましたね。
お役に立ちましたでしょうか?

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2018-03-10