2012/06/15

IE6 JavaScript 問題

前幾天工作中寫了一段javascript 檢查輸入文字是否存在對照表中的 key 值,如果不存在就出現 alert() 訊息,最後將 focus 移回到原欄位等待再輸入。沒想到在 IE 6及FireFox 與 Chrome 中有不同的表現。在 IE6 中會造成不斷出現 alert 訊息,在 FireFox 及 Chrome 都正常。

程式碼如下:

function chkBCode(itm)
{
    if (...) {
        // 省略
    }
    
    alert("代碼不存在");
    itm.value = "";
    itm.focus();
}

以上這段,有問題,為了解決 IE6 的問題,只好將它改成如下 :

function chkBCode(itm)
{
    if (...) {
        // 省略
    }
    
    itm.value = "";
    itm.focus();
    alert("代碼不存在");
   
}


簡單地說,IE6 認為焦點跑了,會不斷地檢查,造成 loop, 只要將 itm.focus() 先執行,將焦點移回輸入文字的地方就沒問題了。