Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery:如何从dropdownlist中选择不区分大小写的值?_Jquery_Drop Down Menu_Case Insensitive - Fatal编程技术网

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

JQuery:如何从dropdownlist中选择不区分大小写的值?,jquery,drop-down-menu,case-insensitive,Jquery,Drop Down Menu,Case Insensitive,我的设想: 我有一个用户输入文本的文本框 文本框有一个onblur函数,它尝试根据文本框输入从下拉列表(如果存在)中选择一个值 如果textbox值与dropdownlist值的大小写相同,则此操作非常有效。但我希望它不区分大小写 因此,如果用户键入“stackoverflow”,那么我希望它从dropdownlist“stackoverflow”中进行选择。如何通过jQuery实现这一点?我认为最好的方法是从前面看,而不是从后面看。如果您将它们全部小写,那么它们都是标准化的,并且更易于使用

我的设想:

  • 我有一个用户输入文本的文本框
  • 文本框有一个onblur函数,它尝试根据文本框输入从下拉列表(如果存在)中选择一个值
如果textbox值与dropdownlist值的大小写相同,则此操作非常有效。但我希望它不区分大小写


因此,如果用户键入“stackoverflow”,那么我希望它从dropdownlist“stackoverflow”中进行选择。如何通过jQuery实现这一点?

我认为最好的方法是从前面看,而不是从后面看。如果您将它们全部小写,那么它们都是标准化的,并且更易于使用。然后你所要做的就是让用户的输入都是小写的,这样就很容易匹配了

另一种选择是使用过滤函数,如:


值和属性需要被替换。

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

代码:

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

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

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

  var matchingValue = $('#select option').filter(function () { 
      return this.value.toLowerCase() === 'stackoverflow'; 
  } ).attr('value');    
  $('#select').val(matchingValue);
当然,应该用一个变量替换文本
'stackoverflow'

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

});
$("#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

});