解決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高手路過,請順便指教一下。