2011-02-08 13 views
1

オプションに基づいて選択ボックスをスワップするためのjqueryスクリプトがありますが、Firefoxではうまく動作しますが、IEでは何もしませんが、IEではエラーも表示されませんでした。本当に誰かが私を正しい方向に向けることを望んでいる。すべてのヘルプは非常に高く評価されるだろう:IEの.change関数の問題

$('select').bind($.browser.msie ? 'click' : 'change', function() {}); 
+0

'$( '。initDealersオプション:選択済み)。val()'は 'this.value'と書くことができます – rahul

+0

jQueryのどのバージョンを使用していますか?私は彼らが今これを修正したと思ったでしょう。 –

答えて

1

は、あなたがそのような何かを行うことができ.click代わりの.change

Getting jQuery to recognise .change() in IE

を使用してみてくださいフィールドからフォーカスを移動するまで選択ボックスが変更されました。

これは、IEがWindowsの選択ボックスコントロールを使用する方法によるものです。この点でプラグインのように効果的に機能します。また、レイヤ化するときにIEで選択ボックスを持つ癖に気付くかもしれません。あなたがそれらをカバーする他の要素を持っている場合でも、選択ボックスは常に上に表示される習慣を持っています。これは同じことによっても引き起こされます。

changeイベントではなく、clickイベントを迅速に解決することができます。これは、ユーザーが変更を行ったときにピックアップし、フィールドからのフォーカスの変更を待つ必要がなくなります。

clickイベントはキーボードを使用して行われた変更を受け取っていないため、タブキーを使用してフィールドに移動して変更すると、clickイベントは発生しません。発砲した。

このため、clickイベントとchangeイベントの両方を取得する必要があります。もちろん、同じ変更を複数回受け取る可能性があるという問題が発生します。理想的ではないので、コードを作成する必要がありますが、ユーザーがフィールドを変更するためのすべての可能な方法をキャッチする唯一の方法です。

ユーザーがキーボードを使用してフィールドを移動したり変更したりすると、選択リストを心臓のコンテンツに上下に移動できますが、移動するまでイベントは発生しませんフィールドから離れている。これはやむを得ないことです。

+0

ありがとうございます。IEは.changeをサポートしていませんか? – Rachel

2

IEはそのAを認識しません。

$(".initDealers").change(function() { 

    if ($('.initDealers option:selected').val() == "All") { 

     $('.allDealers').show(); 

     $('.initDealers').hide(); 

    } else { 

     $('.initDealers').show(); 

    } 
}); 
+0

応答と詳細についてお返事いただきありがとうございます。 – Rachel