我的情况:
- 我有一个用户输入文本的文本框
- 文本框具有基于文本框输入该尝试选择从下拉列表的值(如果存在的话)的功能的onblur
这工作完全正常,如果文本框的值相同情况下的下拉列表值。 但我想这是不区分大小写。
因此,如果用户键入“计算器”,然后我希望它从下拉列表“的StackOverflow”中选择。 我怎样才能通过jQuery做到这一点?
我的情况:
这工作完全正常,如果文本框的值相同情况下的下拉列表值。 但我想这是不区分大小写。
因此,如果用户键入“计算器”,然后我希望它从下拉列表“的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");
});
});
我没有测试它,所以一定要检查是否有语法错误。
正则表达式(正则表达式)函数可能是要走的路。
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
});