Я наткнулся на точку, от которой я не в состоянии думать дальше. Вкратце, у меня есть ul
с сотнями li
, каждый li
имеет десятки слов в виде текста; в самом верху списка я разместил поле ввода, чтобы пользователь мог ввести некоторые ключевые слова; скажем, например, что я хочу отфильтровать из этого огромного списка только те строки, в которых есть следующие три слова в одной строке: "красная сладкая клубника". При нажатии на кнопку поиска строки отфильтровываются, и у меня есть только две строки, содержащие интересующие меня слова.
li1: "С нетерпением жду возможности съесть красную сладкую клубнику"
li2: "Сейчас лето, и красная сладкая клубника теперь свежая"
До этого момента все в порядке.
Проблема возникает, когда три искомых слова разделены другими словами или символами в строке. Итак, в верхнем примере фильтр никогда не покажет мне следующую строку:
li3: "Сейчас в продаже красная и сладкая клубника"
Итак, здесь я выкладываю всю функцию, которая фильтрует и сортирует результаты из верхнего примера:
$(document).ready(function() {
var links = new Array();
$("h4").each(function(index, element) {
links.push({
text: $(this).text(),
element: element
});
});
$("#searchbutton").click(function() {
var query = $("#inputtext").val();
var querywords = query.split(',');
var results = new Array();
for(var i = 0; i < querywords.length; i++) {
for(var j = 0; j < links.length; j++) {
if (links[j].text.toLowerCase().indexOf(querywords[i].toLowerCase()) > -1) {
results.push(links[j].element);
}
}
}
$("h4").each(function(index, element) {
this.style.display = 'none';
});
for(var i = 0; i < results.length; i++) {
results[i].style.display = 'block';
}
});
});
Можно ли искать несколько подстрок и получать результаты, даже если подстроки разделены символами или другими словами?
querytext
не должно бытьquerywords
? - person MikeM   schedule 19.03.2013