2010-10-19 6 views
1

У меня есть встроенное всплывающее окно, которое показывает список флажков и связанных меток каждый в отдельном элементе span. Я хочу добавить текстовое поле, в котором пользователь может ввести для фильтрации значений (имена пользователей) во всплывающем окне. У меня есть следующий код:Расширение jquery Селекторы атрибутов

$("#toEmpFilter").live("change", function() { 

      var FilterVal = $(this).val(); 
      $("input.boxes").not("[title*=" + FilterVal + "]").each(function() { 
       $(this).parent("span.clscheck").hide(); 
      }); 
      $("input.boxes[title*=" + FilterVal + "]").each(function() { 
       $(this).parent("span.clscheck").show(); 
      }); 

     }); 

Значения меток копируются в поле заголовка типа. этот код работает нормально. единственная проблема с этим - название * = FilterVal делает случай Чувствительное сравнение, в то время как мне нужно нечувствительное к регистру сравнение. я сделал некоторое время на Google, но можно найти только расширение: расширить как ключевые слова, в отличие от * = или $ = операторов касается

ответ

1

Вы можете передать функцию в .not() и нормализовать корпус на обоих концах.

var FilterVal = $(this).val().toLowerCase(); // change to lower case 

$("input.boxes").not(function() { 
      // change title to lower case and compare 
     return this.title.toLowerCase().indexOf(FilterVal) > -1; 
}).each(function() { 
    $(this).parent("span.clscheck").hide(); 
}); 

EDIT: не заметил, что вы не делали точное сравнение. Фиксированный для репликации атрибут содержит сравнение.

И вы могли бы сократить ваш следующий код:

$("#toEmpFilter").live("change", function() { 
     var FilterVal = $(this).val().toLowerCase(); 

     $("input.boxes").each(function() { 
      $(this).parent("span.clscheck") 
        .toggle(this.title.toLowerCase().indexOf(FilterVal) > -1); 
     }); 
    }); 

Таким образом, вы только выбрать элементы один раз.

0

Использование

var FilterVal = $(this).val().toLowerCase() 

тогда FilterVal будет непрестанно быть в нижнем регистре.

Предполагая, что заголовок * также является строчным.

+0

Я боюсь, что это предположение неверно :( –

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