2011-02-07 68 views
0

私は、次のコードを使用しています:奇妙なIEの問題

ieLessThan8OptionDisable = function() { 
if ($.browser.msie && parseFloat($.browser.version) < 8) { 
    $("select").find("[disabled]").addClass("disabledforie").removeAttr("disabled"); 
    $("select").change(function(){ 
     var selected = $(this).val(); 
     var disabled = $(this).find("[value="+selected+"]").hasClass("disabledforie"); 
     if (disabled) { 
      alert("This option is disabled.\nSelect will be set to the first option."); 
      $(this).find("option:first").attr("selected","selected"); 
     } 
     }); 
    } 
} 

基本的にこのコードがダウンボックスを選択し、ドロップで無効オプションのためです。これは、ユーザビリティの問題があることを除いて完全に動作します。

IEで無効にする必要があるオプションをクリックすると、警告がポップアップし、その後に選択ボックスが最初の位置にリセットされます。すべてが順調。選択ボックスをクリックしてドロップダウンを開くと、閉じます。基本的には2回クリックする必要があります。

私はIE6とIE7でこれを試しました。どちらもこの問題を抱えています。

すべてのポインタは素晴らしいでしょう!

ありがとうございました

答えて

2

これは焦点の問題のようです。選択ボックスには新しいオプションを選択したときにフォーカスがあり、次に選択エレメントからフォーカスを奪ったアラートがポップアップ表示されます。警告が呼び出されたときにIEが自動的に選択ボックスを閉じるはずですが、ああ、おそらくこのエッジケースをテストしていませんでした。だから、2回のクリックは、次の手順を実行します

  1. 戻り、フォーカスをselect要素
  2. にアラートを起動する前に、あいまいに呼び出しを追加し、リスト

で項目を選択します。

if (disabled) { 
    this.blur();// add in 
    alert("This option is disabled.\nSelect will be set to the first option."); 
    $(this).find("option:first").attr("selected","selected"); 
} 

PS - 実際にこれをテストしていませんが、私はすぐにIEを利用できません。

+0

ありがとう!それは完璧に機能しました! – Adil