2011-02-09 6 views
7

私はjQuery(jquery-1.4.2.min)を使用してオプションを無効にするために次のコードを使用しました.Firefoxでは無効になりますが、IEでは無効になります。ドロップダウンメニューでJqueryを無効にする

<SELECT NAME="SCOPE" id="SCOPE"> 
<OPTION VALUE="G"> Global 
<OPTION VALUE="D"> Dynamic 
</SELECT> 


$("#SCOPE option[value='G']").attr("disabled","disabled"); 
$("#SCOPE option[value='D']").attr("selected", "selected"); 
+5

私はよく覚えていれば、IEは 'option'タグで無効になっていると認識しません。 –

答えて

6

私は間違っているかもしれないが、オプションではなく選択肢を無効にすることができると考えられます。 Firefoxは素晴らしいし、IEはうまくいくので、あなたはその問題を持っている理由を推測することができます。 cssを使用して、そのオプションのテキストをグレーアウトします。

次にjqueryでこれを実行します。

$('#SCOPE').change(function(){ 
    if($('#SCOPE option[value="'+$(this).val()+'"]').attr('disabled') == 'disabled'){ 
    alert('Its disabled you cannot select this option'); 
    } 
}); 

BTW。私はこれをテストしていないので、コードを二重にチェックしてください:)

0

私のテイクは他の回答と少し違っています。

目的はオプションを非表示にすることではなく、無効にすることです(UIの一貫性を保つため)。

私のシナリオ:

私は、フォーム内に複数の選択があり、ユーザーは選択の一つでオプションを選択したときに、他の選択が、その逆は、このオプションを無効にしなければなりません。ユーザーは既に選択されているオプションと同じオプションを選択することができません。私たちは通常、このオプションを無効にしていますが、IE 7ではサポートしていません。ユーザーは、新しい選択肢を追加するオプションも取得します。

ソリューション:ロードオン

選択を移入し、他の選択で、すでに選択したオプションを無効にしている間、ブラウザはその後、IE7であれば、私はオプション(「DATA-にカスタム属性を追加してい無効化されたオプションの色を「#cccccc」(これは無効なオプションの標準色です)に変更します。これにより、ブラウザ間でUIが同じに見えるようになります。変更時に

私はローカル変数で前のオプションを(これは焦点に保存されている)を保存。

ユーザーが

ユーザーが他のドロップダウンリストで選択されていない完全な新しいオプションを選択したオプションを変更しようとします。次に、他の選択をループして色を変更し、他の選択時にこの選択されたオプションにカスタム属性を追加します。

ユーザーが既に選択されているオプションを選択した場合(色がグレー表示されているオプション)。私はオプションが最初にこのカスタム属性を持っているかどうかをチェックします。それが>私は単に "このオプションは既に選択されているかBLAH BLAH"と言うエラーメッセージで前のオプションに戻します。

ユーザーが既存のオプションを他のドロップダウンでは選択されていない新しいオプションに変更したとき。他のすべての選択オプションをループして、その上の色とカスタム属性も削除します。

これが役に立ちます。

関連する問題