DOM で検索し、結果をリストに表示する jQuery スクリプトがあります。
ここにスクリプトの簡易版があります: http://jsfiddle.net/FuJta/1/
通常、多数の結果があるため、スクリプトの実行には時間がかかる場合があります。(上記の例では、これはスクリプトを遅延させる関数でシミュレートされています)。そのため、検索ボックスへの入力が速すぎると、スクリプトによって入力が妨げられ、気分が悪くなります。
自由に入力できるようにスクリプトを変更するにはどうすればよいでしょうか。準備ができたら結果が表示されます。Facebook の検索のようなものが欲しいです。入力が速すぎると、結果が遅くなりますが、入力することはできます。
HTML
<p>Type in foo, bar or baz for searching. It works, but it is quite slow.</p><br/>
<input type="text" id="search"/>
<div id="container" style="display:none">
<div class="element">foo</div>
<div class="element">bar</div>
<div class="element">baz</div>
</div>
<div id="results">
</div>
Javascript
$(function() {
function refreshResults() {
var search = $('#search').val();
var $filtered = $('#container .element').clone().filter(function() {
var info = $(this).text();
return info.toLowerCase().indexOf(search) >= 0;
});
$('#results').empty();
$filtered.each(function() {
$('#results').append($(this));
});
}
// simulating script delay
function pausecomp(millis) {
var date = new Date();
var curDate = null;
do {
curDate = new Date();
}
while (curDate - date < millis);
}
$('#search').keyup(function() {
pausecomp(700);
refreshResults();
});
});
1 つの解決策として、Enter キーを押したときにのみ結果を更新することができます。このように、結果を検索するための遅延は問題ありません。しかし、結果を遅らせて、ユーザーが自由に入力できるようにすることをお勧めします。