1. 程式人生 > >解決Firefox中按下回車鍵重新載入頁面的問題

解決Firefox中按下回車鍵重新載入頁面的問題

我們在網上填寫表單的時候,有一個習慣,就是當終於填完了最後一個框框後,如釋重負,順手一按回車,就提交了。

比如一個使用者登入頁面,以前我在最後一個文字框中添加了這樣的指令碼:

txtPwd.Attributes.Add("onkeydown", "if(event.keyCode==13) event.keyCode=9;");

然後在登入按鈕加上:

btnLogin.Attributes.Add("onfocus", "this.click();");

也就是說先把回車鍵換成tab鍵,在登入按鈕獲取焦點後自動點選。這種方法雖然不是很完美,但在IE下確實還是有用的,可是拿到Firefox下就不行了,因為在Firefox下,keyCode是隻讀的,並不能通過指令碼改變。

後來在網上找到這樣一段指令碼:

function doClick(linkId, e){  
                var e=(typeof event!='undefined')?window.event:e;
                if(e.keyCode != 13){
                    return;
                }
                var fireOnThis = document.getElementById(linkId)
                  if (document.createEvent)
                  {
                    var evObj = document.createEvent('MouseEvents')
                    evObj.initEvent( 'click', true, false )
                    fireOnThis.dispatchEvent(evObj)
                  }
                  else if (document.createEventObject)
                  {
                       fireOnThis.fireEvent('onclick')
                  }
}

這段指令碼的作用是,當用戶按下回車鍵時,觸發指定的按鈕,而不是自動載入頁面,然而,在測試的時候,Firefox的確好使,IE下不知為啥有不靈了。我不知道這段指令碼中哪句話IE不認識,也不想費時間研究了。於是,就在程式中做了個判斷,針對不同的瀏覽器註冊不同的指令碼。

最後這個方法個人覺得還是挺好的,只是不知為啥在IE下不行?如果有js高手路過,請順便指教一下。