JQuery: Как выбрать значение из раскрывающегося списка без учета регистра?
Мой сценарий:
- У меня есть текстовое поле, в которое пользователь вводит текст
- Текстовое поле имеет функцию onblur, которая пытается выбрать значение из выпадающего списка (если оно существует) на основе ввода текстового поля
Это отлично работает, если значение текстового поля - это тот же случай, что и значение выпадающего списка. Но я хочу, чтобы это было нечувствительным к регистру.
Итак, если пользователь набирает "stackoverflow", тогда я хочу, чтобы он выбирал из выпадающего списка "StackOverflow". Как это сделать с помощью jQuery?
Ответы
Ответ 1
Здесь другой подход: найдите соответствующее значение в его фактическом случае "StackOverflow" и вызовите val()
с этим.
var matchingValue = $('#select option').filter(function () {
return this.value.toLowerCase() == 'stackoverflow';
} ).attr('value');
$('#select').val(matchingValue);
Конечно, буквальный 'stackoverflow'
должен быть заменен переменной.
Ответ 2
Я думаю, что лучший способ сделать это - посмотреть на него раньше, чем после. Если вы делаете их строчными, все они стандартизированы и с ними легче работать. Тогда все, что вам нужно сделать, это ввести пользователя в нижний регистр, и это действительно легко сопоставить.
Другой вариант - использовать функцию фильтра, такую как найденная здесь:
$('something').filter(function() {
return (new RegExp(value, "i")).test($(this).attr('attribute'));
});
Значение и атрибут должны быть заменены.
Ответ 3
В размытии, повторите выбор и проверьте, соответствует ли он. Затем выберите ту, которая соответствует.
В коде:
$("#button").blur(function(){
var val = $(this).val();
$("#list option").each(function(){
if($(this).text().toLowerCase() == val) $(this).attr("selected","selected");
});
});
Я еще не тестировал его, поэтому обязательно проверяйте наличие синтаксических ошибок.
Ответ 4
Функция регулярного выражения (RegExp), вероятно, способ пойти.
var txt = new RegExp(pattern,attributes);
: шаблон текста
атрибуты: "i" для нечувствительности к регистру
Вы можете комбинировать функцию фильтра. что-то вроде этого должно работать.
$("#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
});