2009-08-06 2 views
11

Мой сценарий:JQuery: Как выбрать значение из раскрывающегося списка без учета регистра?

  • У меня есть текстовое поле, что пользователь вводит текст
  • Текстовое поле имеет функцию ONBLUR, которая пытается выбрать значение из DropDownList (если он существует) на основе ввода текстового поля

Это прекрасно работает, если значение текстового поля совпадает с значением выпадающего списка. Но я хочу, чтобы это было нечувствительным к регистру.

Так что, если пользователь набирает «stackoverflow», то я хочу, чтобы он выбирал из выпадающего списка «StackOverflow». Как это сделать с помощью jQuery?

ответ

13

Вот еще один подход: найдите соответствующее значение в его фактическом случае «StackOverflow» и вызовите val() с этим.

var matchingValue = $('#select option').filter(function() { 
     return this.value.toLowerCase() == 'stackoverflow'; 
    }).attr('value');  
    $('#select').val(matchingValue); 

Конечно, буквальное 'stackoverflow' следует заменить переменную.

+0

Спасибо, это сработало так, как я хотел! –

4

Я думаю, что лучший способ сделать это - взглянуть на него от прежде, чем после. Если вы делаете их строчными, все они стандартизированы и с ними легче работать. Тогда все, что вам нужно сделать, это сделать вход пользователя в нижнем регистре, и это действительно легко сопоставить.

Другой вариант заключается в использовании функции фильтра, как один found here:

$('something').filter(function() { 
     return (new RegExp(value, "i")).test($(this).attr('attribute')); 
    }); 

значения и атрибутов должны быть заменены, хотя.

1

На размытие, повторите выбор и проверьте, соответствует ли оно. Затем выберите ту, которая соответствует.

В коде:

$("#button").blur(function(){ 
    var val = $(this).val(); 
    $("#list option").each(function(){ 
    if($(this).text().toLowerCase() == val) $(this).attr("selected","selected"); 
    }); 
}); 

Я не проверял еще, так что не забудьте проверить на наличие ошибок синтаксиса.

0

Функция регулярного выражения (RegExp) - это, вероятно, путь.

var txt = new RegExp(pattern,attributes); 

схема: текстовый шаблон
атрибутов: «я» для регистронезависимых

Вы можете комбинировать с функцией фильтра. что-то вроде этого должно работать.

$("#textbox").blur(function() { 

    var text = $(this).val(); 

    var dropdownlist = 
     $("select").filter(function() { 
      return (new RegExp(text, "i")).test($(this).attr("id")); 
     }); 

    // do something to dropdownlist 

}); 

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

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