2009-08-06 3 views
11

私のシナリオ:JQuery:ドロップダウンリストの大文字小文字を区別しない値を選択するにはどうすればよいですか?

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

これは、テキストボックスの値がドロップダウンリストの値と同じ場合には問題なく動作します。しかし、私はそれが大文字と小文字を区別しないようにしたい。

したがって、ユーザーが "stackoverflow"と入力すると、ドロップダウンリスト "StackOverflow"から選択します。どうすればjQueryでこれを行うことができますか?

答えて

13

実際のケースで一致する値 "StackOverflow"を見つけて、それにval()を呼び出します。もちろん

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

、リテラル'stackoverflow'は変数に置き換えてください。

+0

ありがとうございました –

4

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

別のオプションは、1 found hereのように、フィルタ機能を使用することです:

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

値と属性はかかわらず、交換する必要があります。

1

ぼかし処理では、オプションを繰り返し処理し、一致するかどうかを確認します。次に、一致するものを選択します。コードで

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

パターン:テキストパターン
属性: "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 

}); 
関連する問題