jQuery.grep()で検索しているJSONデータがいくつかあります。基本的に、いくつかの検索ボックスがあり、ボックスに入力されたものと一致するJSONレコードのみを返したいと考えています。
ここに、いくつかのコードがあります。
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var events =
[{
'id': '1',
'title': 'Test event',
'start': '2012-08-08 18:45:00',
'end': '2012-08-15 18:45:00',
'participant': 'yes',
'notes': 'A small river named Duden flows by their place and supplies it with the necessary regelialia.',
},
{
'id': '2',
'title': 'Another test event',
'start': '2012-08-24 16:37:00',
'end': '2012-08-26 16:37:00',
'participant': 'yes',
'notes': 'It is a paradisematic country, in which roasted parts of sentences fly into your mouth. Even the all-powerful Pointing has no control about the blind texts it is an almost unorthographic life.',
},
{
'id': '3',
'title': 'infinity event',
'start': '2012-08-09 22:44:00',
'end': '2012-08-09 15:44:00',
'participant': 'no',
'notes': 'Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.',
}];
$('#output').html(JSON.stringify(events));
$('#title_search').change(function() {
var sorted_events = events;
sorted_events = $.grep(events, function(evt,i){
return evt.title.toLowerCase().indexOf($('#title_search').val()) >= 0
});
$('#output').html(JSON.stringify(sorted_events));
});
});
</script>
</head>
<body>
Title: <input type='text' id='title_search'></input><br/>
Notes: <input type='text' id='notes_search'></input><br/>
Q: <input type='text' id='q_search'></input><br/>
<div id="output">
</div>
</body>
ご覧のとおり、#title_searchが変更されると、JSONのすべての「タイトル」フィールドが取得され、一致するフィールドのみが返されます。これはすべて正常に機能しています。
ここで、「メモ」フィールド(およびこの例にない他のテキストフィールド)についても同じことを行いたいのですが、検索フィールドごとに同じ関数を何度も書くのは非効率的(そしてまったく間違っている)のようです。 。ここで私のJavaScriptスキルが崩壊します。私はこれがJavaScript/jQueryで可能であることを知っていますが、それを完全に把握したことはありません。誰かが私にその方法を教えてくれて、私が5歳のようにそれを説明してもらえますか?
ボーナスポイント:「参加者」には2つの可能な値しかないため、ドロップダウンも追加し、テキストフィールドと同じように機能させます。