我的情景:
如果文本框值与下拉列表值相同,则此工作完全正常。但我希望它不区分大小写。
因此,如果用户键入“stackoverflow”,那么我希望它从下拉列表“StackOverflow”中进行选择。我怎么能通过jQuery做到这一点?
答案 0 :(得分:14)
这是另一种方法:在实际情况下找到匹配值“StackOverflow”,并用它调用val()
。
var matchingValue = $('#select option').filter(function () {
return this.value.toLowerCase() == 'stackoverflow';
} ).attr('value');
$('#select').val(matchingValue);
当然,文字'stackoverflow'
应该用变量替换。
答案 1 :(得分:4)
我认为最好的方法是从之前而不是之后看。如果将它们全部设为小写,它们都是标准化的,更易于使用。然后你所要做的就是让用户的输入全部小写,并且很容易匹配东西。
另一个选择是使用过滤器功能,例如found here:
$('something').filter(function() {
return (new RegExp(value, "i")).test($(this).attr('attribute'));
});
虽然需要替换值和属性。
答案 2 :(得分:1)
在模糊时,迭代您的选项并检查它是否匹配。然后选择匹配的那个。
在代码中:
$("#button").blur(function(){
var val = $(this).val();
$("#list option").each(function(){
if($(this).text().toLowerCase() == val) $(this).attr("selected","selected");
});
});
我还没有测试过,所以一定要检查语法错误。
答案 3 :(得分:0)
正则表达式(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
});