Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как осуществить неточный поиск в input по значению data-* атрибута?

Константин Ефименко Гуру (3721), закрыт 4 года назад
Сейчас это выглядит так:
html:
<input type="text" placeholder="Поиск" id="inp" list="rdr" />
<datalist id="rdr">
<option class="opt" value="1 Текст" data-kp="1"></option>
<option class="opt" value="2 Текст" data-kp="2"></option>
<option class="opt" value="3 Текст" data-kp="3"></option>
...
<option class="opt" value="183 Текст" data-kp="183"></option>
</datalist>

js:
$('#inp').on('input', function() {
var val = $(this).val();
$("#rdr").find("option").each(function() {
if ($(this).attr('data-kp') == val) {
$('#rdr option').removeClass("active");
$(this).addClass('active');
}
});
});

Скрипт ищет по точному совпадению в поле ввода. Как сделать поиск по неточному совпадению, как если бы я выбирал опции с текстом и искомым значением?

Ссылка на скрипт: http://jsfiddle.net/ngrfqpac/
Откройте код в браузере, чтобы посмотреть как изменяется класс "active".
Лучший ответ
Elepsis Eclipse Гений (64071) 4 года назад
Через регулярное выражение и match() ( можно было еще exec )

http://jsfiddle.net/OPTlMUS/2hdu1gw7/

Но я всё равно не понял, зачем туда добавлять активный класс? Чтобы знать номер выбранной опциии? Так её и без этого можно достать...

...each( function( i ){ console.log( i ) });

i - будет номером текущего элемента из перебираемого списка.
Константин ЕфименкоГуру (3721) 4 года назад
Обрати внимание, что если выбрать какое-либо значение из списка, а затем стереть полностью, то весь список станет активным (а этого быть 100% не должно). Кроме того, если выбрать "3 Текст", то все пункты где есть эти слова станут активными, в данном случае "3 Текст" и "183 Текст".

"Но я всё равно не понял, зачем туда добавлять активный класс?"

Я пронумеровал весь список через data-* атрибут. На основе активного класса хочу получать текущий выбранный номер вкладки (позже мне он будет нужен). Не факт, что номер вообще будет соответствовать номеру по порядку.

"Так её и без этого можно достать..."

Есть идеи по лучше?)))
Elepsis Eclipse Гений (64071) http://jsfiddle.net/OPTlMUS/bd1e6gua/ в регулярках символ ^ означает начало строки. А если опции постоянно будут динамически добавляться - ага, наверно легче через класс отслеживать.
Остальные ответы
Обычный человек Ученик (198) 4 года назад
Я не могу, закончились комментарии
Константин ЕфименкоГуру (3721) 4 года назад
Мог бы ответить и завтра, я бы прочитал.
Похожие вопросы