前提・実現したいこと
Underscore.jsとjsonを使った検索機能付きのサイトを作成中です。
下記のサイトを参考にさレクトボックスでの実装は出来たのですが、
これをマルチのセレクトボックスで複数選択し検索したいのですが、
何分未熟なものでどうしてもうまくいきません。
"color"のredとblueを含む値を取得して検索するなど。
どなたかご教授頂ける方がいらっしゃいましたらお伺できますでしょうか?
何卒よろしくお願いいたします。
https://www.tam-tam.co.jp/tipsnote/javascript/post10620.html
<form id="search" name="search"> 色 <select name="color" id="color"> <option value="">指定しない</option> <option value="red">赤</option> <option value="blue">青</option> <option value="green">緑</option> </select>形
<select name="type" id="type">
<option value="">指定しない</option>
<option value="square">四角</option>
<option value="circle">丸</option>
</select>
var items = [
{
"name" : "赤い四角",
"color" : "red",
"type" : "square"
},
{
"name" : "赤い丸",
"color" : "red",
"type" : "circle"
},
{
"name" : "青い四角",
"color" : "blue",
"type" : "square"
},
{
"name" : "青い丸",
"color" : "blue",
"type" : "circle"
},
{
"name" : "緑の四角",
"color" : "green",
"type" : "square"
},
{
"name" : "緑の丸",
"color" : "green",
"type" : "circle"
}
];
// 検索が押された時の処理
$('#search').on('submit' , function(event){
// デフォルトのイベントをキャンセル
event.preventDefault();
// 検索項目のオブジェクトを作成してセレクトボックスの値を格納
var query = {};
if($('#color').val() != ''){
query.color = $('#color').val();
}
if($('#type').val() != ''){
query.type = $('#type').val();
}
// データの中から一致するオブジェクトを検索
var results = _.where(items, query);
// 返ってきた配列で出力処理
outputResults(results);
});
// 検索結果の出力処理
function outputResults(results){
// 変数の初期化
var html = '';
// 受け取った配列をループで処理 // 出力するHTMLの整形 jQuery.each(results, function() { html += '<div class="item ' + this.color + ' ' + this.type + '">'; html += this.name; html += '</div>'; }); // HTMLに出力 $('#items').empty().append(html);
}
// ページ読み込み時はすべてのアイテムを出力する
$(window).on('load', function(){
outputResults(items);
});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/29 09:34
2018/08/29 10:34
2018/08/30 07:10
2018/08/30 08:03
2018/08/30 08:04
2018/08/30 08:11
2018/08/30 09:12
2018/08/31 06:57
2018/08/31 14:55
2018/08/31 23:48
2018/09/03 05:24
2018/09/04 06:10
2018/09/04 06:54
2018/09/04 07:28
2018/09/04 08:01
2018/09/04 08:05
2018/09/04 09:06
2018/09/04 10:33 編集
2018/09/05 02:13
2018/09/06 05:59