JQuery:如何从下拉列表中选择不区分大小写的值?

时间:2009-08-06 14:13:15

标签: jquery drop-down-menu case-insensitive

我的情景:

  • 我有一个用户输入文字的文本框
  • 文本框有一个onblur函数,它尝试根据文本框输入从下拉列表中选择一个值(如果存在)

如果文本框值与下拉列表值相同,则此工作完全正常。但我希望它不区分大小写。

因此,如果用户键入“stackoverflow”,那么我希望它从下拉列表“StackOverflow”中进行选择。我怎么能通过jQuery做到这一点?

4 个答案:

答案 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

});