Вы можете использовать RegExp
test(str)
метод.В регулярном выражении знак вставки ^
совпадает с началом строки.
function searchClients() {
var clientSearch = document.getElementById("clientSearch");
var s = clientSearch.value;
$("span").show();
$("span").filter(function () {
return !(new RegExp('^'+(s).toUpperCase()))
.test((this.textContent || this.innerText || '').toUpperCase());
}).hide();
}
Замените ваш метод searchClients
на указанную выше функцию.Таким образом, вам не нужно ничего добавлять в существующий HTML-шаблон.Мы просто выбираем все span , чтобы показать их по умолчанию, а затем скрываем все, что не соответствует текущему поисковому запросу.
Обратите внимание на дополнительные toUpperCase()
для нечувствительности к регистру.Вы можете удалить их, если хотите, чтобы при вводе результатов поиска учитывался регистр.
Мы также используем метод .filter
вместо селектора contains
.
Чтобы избежать необходимости изменять существующий HTML-шаблон (например, добавлять дополнительные атрибуты, такие как name
или id
к вашему диапазону для обеспечения поиска), мы используем textContent
и / илиinnerText
для чтения внутреннего html-содержимого span .
http://jsfiddle.net/apappas1129/xahbL8u6/2/