[EXTJS]解決textfield設定readonly時在IE的Bug

EXTJS在IE瀏覽器下,當texfield設定為唯讀時(readonly=true),所有按鍵如預期都無法輸入,唯獨[Backspace]按鈕,會讓你回到上一頁,比較好的解法就是在這個頁面鎖定[Backspace]按鈕。



 if(Ext.isIE){//判斷是否為IE瀏覽器
  document.onkeydown = function(event) {//抓取鍵盤的event
      var ele = window.event.srcElement;

      //e.keyCode === 8 確認按下的是baclspace
      //ele.type=='text textfield才過濾
      //ele.id=='textfield_id' 針對textfield id做過濾,否則所有欄位的backspace都被鎖住
      if (e.keyCode === 8 && ele.type=='text' && ele.id=='textfield_id') {
       return false;
      }
  };  
 }

我自已還遇到一個狀況是該欄位有可能是可以輸入的狀態(也就是readonly=true),但是以上面的寫法是會把backspace完全鎖住,但是似乎又抓不到textfield是否為readonly的屬性,目前解法是自己多加一個參數來記錄目前textfield是否為readonly,每次設定readonly時,需要額外再修改此參數,再加到上述程式中判斷。
        var textReadOnly=false;
 if(Ext.isIE){//判斷是否為IE瀏覽器
  document.onkeydown = function(event) {//抓取鍵盤的event
      var ele = window.event.srcElement;
       
      //e.keyCode === 8 確認按下的是baclspace
      //ele.type=='text textfield才過濾
      //ele.id=='textfield_id' 針對textfield id做過濾,否則所有欄位的backspace都被鎖住
      //textReadOnly判斷
      if (e.keyCode === 8 && ele.type=='text' && ele.id=='textfield_id' &&textReadOnly) {
       return false;
      }
  };  
 }

0 意見: