1. ホーム
  2. jquery

[解決済み] 右から検索トグル

2022-02-09 16:12:02

質問

ブートストラップ上で右側からのシンプルな検索トグルを実現しようとしています。問題は、ボタンがダブルクリックされたときにクリックが発生し、検索入力がすぐに消えてしまうことです。

私が実現しようとしているのは、ボタンをクリックすると、同じボタンをクリックしたときにdivの開閉を切り替える必要があるということです。

https://codepen.io/shahil/pen/XjdYdg

  $(".search-btn").click(function () {
	  	$(".search-input-elm").animate({ width: 'toggle' });
	  	$(".search-input-elm").toggle();
	});
.search { position:relative; }
.search .search-input-elm { position:absolute; top:10px; right: 37px;  display: none; width: 175px;}

.search .search-btn {background:transparent;border:0;margin-top: 9px; float:right;  }
.search .search-input{
    width: 100%;
    background: #fff;
    color:#222;
    border: 0;
    padding: 6px 10px;
    border-top-left-radius: 30px;
    border-bottom-left-radius: 30px;
    border-top-right-radius: 30px;
    border-bottom-right-radius: 30px;
}
.search-submit {
    position: absolute;
    top: 3px;
    right: 10px;
}
.search .search-btn:focus, header .search .search-input:focus { outline:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="search">
                            <div class="search-wrap">
                                <div class="search-input-elm">
                                    <input class="search-input" type="text" placeholder="search.." />
                                    <button class="search-submit">></button>
                                </div>
                                
                                <button class="search-btn">Search BUTTON</button>
                            </div>
                        </div>

解決方法は?

削除する $(".search-input-elm").animate({ width: 'toggle' }); をjsから削除してください。

  $(".search-btn").click(function () {
	  	$(".search-input-elm").animate({ width: 'toggle' });
	  	
	});
.search { position:relative; }
.search .search-input-elm { position:absolute; top:10px; right: 37px;  display: none; width: 175px;}

.search .search-btn {background:transparent;border:0;margin-top: 9px; float:right;  }
.search .search-input{
    width: 100%;
    background: #fff;
    color:#222;
    border: 0;
    padding: 6px 10px;
    border-top-left-radius: 30px;
    border-bottom-left-radius: 30px;
    border-top-right-radius: 30px;
    border-bottom-right-radius: 30px;
}
.search-submit {
    position: absolute;
    top: 3px;
    right: 10px;
}
.search .search-btn:focus, header .search .search-input:focus { outline:none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<div class="search">
                            <div class="search-wrap">
                                <div class="search-input-elm">
                                    <input class="search-input" type="text" placeholder="search.." />
                                    <button class="search-submit">></button>
                                </div>
                                
                                <button class="search-btn">Search BUTTON</button>
                            </div>
                        </div>