2017-01-07 4 views
-1

У меня есть HTML, как показано ниже:динамически поиск сНа базы по входному значению

<input type='search' name='con_msg_srch' placeholder='Search Contact'/> 
<div class='contactlist'> 
    <span class='_webnn'>James Oduro</span> 
</div> 
<div class='contactlist'> 
    <span class='_webnn'>John Doe</span> 
</div> 
<div class='contactlist'> 
    <span class='_webnn'>Opoku Elvis</span> 
</div> 

Я написал функцию поиска для конкретного контакта в ContactList контакта, innerHTML его пролетных дети соответствует значению вход поиска.

Как я могу изменить RegExp сделать следующее:

  1. Заменить двойной пробел между значением поискового ввода
  2. состоянии соответствовать чувствительности к регистру от Aa-Zz
  3. Должна быть в состоянии соответствовать, если пользователь вводит последнее имя или первое имя

У меня действительно мало знаний в RegExpression thats w гип мне нужна помощь

JQuery:

$('input[name="con_msg_srch"]').keyup(function(){ 
    var value = $.trim($(this).val()); 
    var exp = new RegExp('^' + value, 'i'); 

    $('.contactlist').each(function() { 
     var isMatch = exp.test($('._webnn', this).text()); 
     $(this).toggle(isMatch); 
    }); 

}); 

Спасибо.

+0

Почему проголосовать ?? .. Я не хочу, чтобы отправлять запрос на поиск каждый раз на клавиатуре, вот почему я делаю такой локальный поиск ... cux в моем реальном проекте я возвращаю много контактного списка –

+1

просто удалите ''^'' – charlietfl

ответ

0

Попробуйте это.

$('input[name="con_msg_srch"]').keyup(function(){ 
    var value = $.trim($(this).val()); 
    var value = value.replace(/ +/g, ' ') 
    var exp = new RegExp(value, 'i'); 

    $('.contactlist').each(function() { 
     var isMatch = exp.test($('._webnn', this).text()); 
     $(this).toggle(isMatch); 
    }); 

}); 
+0

Спасибо .. действительно простое решение –

0

Вы должны поместить innerText диапазона также как значение атрибута в диапазон, как показано ниже.

<div class='contactlist'> 
    <span class='_webnn' data='James Oduro'>James Oduro</span> 
</div> 
<div class='contactlist'> 
    <span class='_webnn' data='John Doe'>John Doe</span> 
</div> 
<div class='contactlist'> 
    <span class='_webnn' data='Opoku Elvis'>Opoku Elvis</span> 
</div> 

Вместо поиска на основе содержимого HTML теперь вы можете выполнять поиск по диапазону на основе значения атрибута «данные». Это упростит вашу логику поиска.

Нет необходимости иметь имя атрибута «данные». Вы можете создать атрибут с любым именем для HTML-тега.

Надеюсь, это поможет вам решить вашу проблему.

+0

да ... конечно, я сделаю так. спасибо –

Смежные вопросы