我的方案。
如果文本框的值与下拉列表的值大小写相同,则该功能完全可以正常工作。 但我希望它不区分大小写。
所以如果用户输入 "stackoverflow",那么我希望它从下拉列表中选择 "StackOverflow"。 我如何通过jQuery来实现?
这里有另一种方法:在实际情况下找到匹配的值,"StackOverflow",然后调用 val()
与。
var matchingValue = $('#select option').filter(function () {
return this.value.toLowerCase() === 'stackoverflow';
} ).attr('value');
$('#select').val(matchingValue);
当然,从字面上看 'stackoverflow'
应该用一个变量来代替。
我认为最好的方法是从之前看,而不是从之后看。如果你把它们都做成小写,它们都是标准化的,更容易操作。那么你要做的就是把用户的输入全部变成小写,这样就真的很容易匹配到东西了。
另一个选择是使用一个过滤器功能,比如说 在此找到:
$('something').filter(function() {
return (new RegExp(value, "i")).test($(this).attr('attribute'));
});
但需要更换值和属性。
在模糊上,迭代你的选项,检查是否匹配。然后选择匹配的那一个。
在代码中。
$("#button").blur(function(){
var val = $(this).val();
$("#list option").each(function(){
if($(this).text().toLowerCase() == val) $(this).attr("selected","selected");
});
});
我还没有测试过,所以一定要检查语法错误。
正则表达式(RegExp)函数可能是最好的方法。
var txt = new RegExp(pattern,attributes);
pattern:文本模式属性。"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
});