JQuery的:如何选择从下拉列表不区分大小写的值?(JQuery: How do I select

2019-09-22 08:09发布

我的情况:

  • 我有一个用户输入文本的文本框
  • 文本框具有基于文本框输入该尝试选择从下拉列表的值(如果存在的话)的功能的onblur

这工作完全正常,如果文本框的值相同情况下的下拉列表值。 但我想这是不区分大小写。

因此,如果用户键入“计算器”,然后我希望它从下拉列表“的StackOverflow”中选择。 我怎样才能通过jQuery做到这一点?

Answer 1:

这里的另一种方法:找到其实际情况的匹配值,“StackOverflow的,”并调用val()这一点。

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

当然,字面'stackoverflow'应该用变量代替。



Answer 2:

我认为要做到这一点,最好的办法就是看它从之前而不是之后进行。 如果你让他们全部小写,他们都是标准化和更容易使用。 然后,所有你需要做的就是让用户的输入全部小写,并且它是很容易满足的东西。

另一种选择是使用过滤器功能,如一个在这里找到 :

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

值和属性虽然需要进行更换。



Answer 3:

在模糊,遍历您的选项,并检查它是否匹配。 然后选择相匹配的。

在代码:

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

我没有测试它,所以一定要检查是否有语法错误。



Answer 4:

正则表达式(正则表达式)函数可能是要走的路。

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

});


文章来源: JQuery: How do I select a value from a dropdownlist case insensitive?