2012-05-21 1 views
1

У меня есть следующий код:Построение быстрого поиска с JQuery

<input type="text" id="comboBox" /> 
<ul id="comboBoxData"> 
    <li>1</li> 
    <li>12</li> 
    <li>123</li> 
    <li>1234</li> 
    <li>12345</li> 
    <li>123456</li> 
    <li>1234567</li> 
    <li>12345678</li> 
</ul> 

со следующим кодом JQuery:

$(document).ready(function() { 
    $('#comboBox').bind('keydown keypress keyup change', function() { 
     var search = $('#comboBox').val(); 
     if (search !== '') { 
      $('#comboBoxData li').hide(); 
      $('#comboBoxData li[text*=' + search + ']').show(); 
     } else { 
      $('#comboBoxData li').show(); 
     } 
    }); 
}); 

при вводе текста как «1» или «12» в Поле поиска «comboBox» должно отфильтровывать все LI, текст которых не содержит мои данные поиска, однако по какой-то причине он ничего не отображает. Зачем?

ответ

6

ваш пример не работает, потому что текст не является атрибутом li.

Попробуйте использовать filter() для поиска текста вместо:

$('#comboBox').bind('keydown keypress keyup change', function() { 
    var search = this.value; 
    var $li = $("#comboBoxData li").hide(); 
    $li.filter(function() { 
     return $(this).text().indexOf(search) >= 0; 
    }).show(); 
}); 

Example fiddle

+0

Спасибо, Рори, отлично работал –

+0

привет Рори, извините за текст здесь, но я пришел сюда из исследования. Я также использую плагин 'quicksearch' js для фильтрации моих записей из' gridview'. Я хочу, чтобы я показывал предупреждающее сообщение, если вставлены некорректные записи. для получения дополнительной информации смотрите здесь http://stackoverflow.com/questions/43338571/while-filtering-gridview-from-textbox-show-some-message надеюсь, что вы будете вести меня. благодаря – BNN

0

нет text недвижимости для li. вы можете получить text() свойство insted.
InstEd из:

$('#comboBoxData li').hide(); 
$('#comboBoxData li[text*=' + search + ']').show(); 

попробовать

$('#comboBoxData li').each(function(){ 
    if (($this).text().indexOf(search) > -1) $(this).show(); 
    else $(this).hide(); 
}); 
0

Чтобы найти элемент, который содержит значение от флажка, вы должны перебрать каждый элемент и использовать функцию .text(), чтобы получить текст-содержимое тега:

$('#comboBoxData li').each(function() { 
    if ($(this).text().indexOf(search) != -1) { 
     $(this).show(); 
    } 
}); 
0
$(document).ready(function() { 
     $("#comboBoxData li").hide(); 

     $('#comboBoxData li').each(function (i) { 
      $(this).attr('data-text', function() { 
       return $(this).text(); 
      }); 
     }); 

     $('#comboBox').bind('change keypress keyup change', function() { 
      $("#comboBoxData li").hide(); 
      $('#comboBoxData li[data-text*="' + $.trim($(this).val()) + '"]').show(); 
     }); 
    });​ 

для живой демонстрации смотрите по этой ссылке: http://jsfiddle.net/nanoquantumtech/B7NxP/

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

  • Нет связанных вопросов^_^