入力時にドロップダウンのコンテンツをフィルタリングするプロトタイププラグインを使用しました。たとえば、テキストボックスに「cat」と入力した場合、サブストリング「cat」を含むアイテムのみがドロップダウンのオプションとして残ります。
誰でもこれを行うことができるjqueryプラグインを知っていますか?
これを行うための小さなスクリプト 数年前に書きました。おそらく簡単にjQueryプラグインとしてパッケージ化できます。どういたしまして。
また、コードを確認したい場合は、 PHP関数リファレンス Dashboardウィジェットでもこれを行います。
私はちょうど似たようなものを探していましたが、私が必要とするものに最適なものは JQuery UI MultiSelect のようです。複数選択ボックスを非常に滑らかなデュアルリストビューに変え、マスターリストでライブフィルタリングを行います。
編集:新規開発!
「 Chosen は、長くて扱いにくい選択ボックスをはるかに使いやすくするJavaScriptプラグインです。現在、jQueryとPrototypeの両方のフレーバーで使用できます。」
近い将来、すべての選択使用プロジェクトで Chosen を使用しています。
Select2 は、最近選ばれたフォークであり、さらに多くの機能があります(例:AJAX +個々のアイテムのカスタムHTML)。
これらのプラグインを確認してください。
jQuery オートコンプリート プラグイン
編集:最初は間違ったオートコンプリートプラグインにリンクしました。
$(document).ready(function() {
$("#myInput").on("keyup", function() {
var value = $(this).val().toLowerCase();
$("#filter *").filter(function() {
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<h2>Filter</h2>
<input id="myInput" type="text" placeholder="Search..">
<br><br>
<div class="filter-by">
<span>Filter by:</span>
<select class="status-filter" id="filter">
<option value="">All</option>
<option value="paid">Paid</option>
<option value="accepted">Accepted</option>
<option value="pending">Pending</option>
<option value="rejected">Rejected</option>
</select>
</div>
私はこの機能をすぐに実装しました。いくつかのグローバル変数を使用しますが、これらを削除するには実装を改善する必要があります。
ここで、「#xsca_member_filter」はテキスト入力としてのフィルターであり、「#members」は選択入力です。
$('documenet').ready(function(){
init();
$('#xsca_member_filter').keyup(function(){
filter($(this));
});
});
//save all available options with their values and the empty option.
init = function(){
options = new Object();
$('#owner option').each(function(){
var obj = $(this);
if(obj.attr("value") != "")
options[obj.attr('value')] = obj.html();
else
emptyOption = obj.html();
});
selObj = $('#owner');
};
filter = function(elem){
var filter = elem.val();
var selected = $('#owner option:selected').val();
//delete all options and add the empty option
selObj.html("");
selObj.append("<option> "+emptyOption+" </option>");
//add all options conaining the filter string
for(value in options){
var option = options[value];
if((options[value]).indexOf(filter) != -1){
selObj.append("<option value='"+value+"'> "+options[value]+" </option>");
}
}
//select the previously selected option
$("#owner option[value = '"+selected+"']").prop("selected", true);
}
実際の選択ボックスに基づいて、オプションテキストの途中で一致する「jqueryオプションフィルター」を試してください。 http://plugins.jquery.com/project/jquery_options_filter
日記のために