JQuery: 我如何从dropdownlist中选择一个不区分大小写的值?

问题描述 投票:13回答:4

我的方案。

  • 我有一个文本框,用户可以输入文本。
  • 文本框有一个onblur功能,它试图根据文本框的输入从下拉列表(如果它存在的话)中选择一个值。

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

所以如果用户输入 "stackoverflow",那么我希望它从下拉列表中选择 "StackOverflow"。 我如何通过jQuery来实现?

jquery drop-down-menu case-insensitive
4个回答
18
投票

这里有另一种方法:在实际情况下找到匹配的值,"StackOverflow",然后调用 val() 与。

  var matchingValue = $('#select option').filter(function () { 
      return this.value.toLowerCase() === 'stackoverflow'; 
  } ).attr('value');    
  $('#select').val(matchingValue);

当然,从字面上看 'stackoverflow' 应该用一个变量来代替。


4
投票

我认为最好的方法是从之前看,而不是从之后看。如果你把它们都做成小写,它们都是标准化的,更容易操作。那么你要做的就是把用户的输入全部变成小写,这样就真的很容易匹配到东西了。

另一个选择是使用一个过滤器功能,比如说 在此找到:

$('something').filter(function() {
        return (new RegExp(value, "i")).test($(this).attr('attribute'));
    });

但需要更换值和属性。


2
投票

在模糊上,迭代你的选项,检查是否匹配。然后选择匹配的那一个。

在代码中。

$("#button").blur(function(){
  var val = $(this).val();
  $("#list option").each(function(){
     if($(this).text().toLowerCase() == val) $(this).attr("selected","selected");
  });
});

我还没有测试过,所以一定要检查语法错误。


0
投票

正则表达式(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

});
© www.soinside.com 2019 - 2024. All rights reserved.