14

私のシナリオ:

  • ユーザーがテキストを入力するテキストボックスがあります
  • テキストボックスには、テキストボックスの入力に基づいてドロップダウンリスト(存在する場合)から値を選択しようとするonblur関数があります

テキストボックスの値がドロップダウンリストの値と同じ場合、これは完全に正常に機能します。ただし、大文字と小文字を区別しないようにします。

したがって、ユーザーが「stackoverflow」と入力した場合は、ドロップダウンリスト「StackOverflow」から選択する必要があります。jQueryを介してこれを行うにはどうすればよいですか?

4

4 に答える 4

19

別のアプローチは次のとおりです。実際のケースで一致する値「StackOverflow」を見つけて、それを呼び出しますval()

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

もちろん、リテラル'stackoverflow'は変数に置き換える必要があります。

于 2009-08-06T14:29:18.750 に答える
4

これを行う最良の方法は、後ではなく前から見ることだと思います。それらをすべて小文字にすると、すべて標準化され、操作が簡単になります。次に、ユーザーの入力をすべて小文字にするだけで、簡単に一致させることができます。

もう1つのオプションは、ここにあるようなフィルター関数を使用することです。

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

ただし、値と属性を置き換える必要があります。

于 2009-08-06T14:18:45.883 に答える
2

ぼかしの場合は、オプションを繰り返して、一致するかどうかを確認します。次に、一致するものを選択します。

コード内:

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

まだテストしていませんので、構文エラーを確認してください。

于 2009-08-06T14:23:37.030 に答える
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

});
于 2009-08-06T14:34:48.167 に答える