IE6中Form.submit不提交的問題

BUG描述

 

頁面是用JavaScript準備數據填寫Form然後提交。然而,在IE6下通過JavaScript提交數據時頁面沒有反應(也沒有提示)!?奇怪的是,在FireFox/Opera下面一切正常。

 

BUG分析

 

首先:接到BUG後,先在測試機上重現了BUG,瞭解測試人員的操作步驟,然後在研發的機子上重現BUG。

其次:對BUG進行了跟蹤。

起初認爲是程序的那個地方有邏輯錯誤,檢查代碼無誤。嘗試用多種瀏覽器測試,發現在IE7/8、FireFox、Opera、360瀏覽器下正常,唯獨IE6下不正常, 所以排除了邏輯錯誤這個原因;

上網搜索發現IE6下如果是用<input type="submit"/>按鈕,則能正常提交數據,若是通過JavaScript腳本:formElement.submit(),則會提交失敗,網上提出了使用setTimeout()的辦法來解決;

進一步深入發現, <a/>有個鏈接屬性 href , 而form也有一個頁面請求屬性 action, 當兩屬性同時存在時, 點擊<a/>當然會優先<a/>的href鏈接,但如果是 <a href="javascript:;" ></a>, 又會是什麼情況呢? 實踐證明IE7.0+ , FF3.0+, Opera9.6+ 均能正確處理, 忽略<a/>的href, 執行表單的submit動作, 唯有 IE6 仍堅持着自己的原則, 只要有href , 就只嘗試執行鏈接 href , 除非你的<a/>標籤中去掉 href屬性, 但去掉 href 你將發現IE 下將不會出現下劃線;看來是因爲 ie6 執行默認動作引起來,目前兩種解決方法:

 

第一種方法:

<a class="bt_3"  style="cursor:pointer;" id="btnSubmit1" οnclick="submitPage()">提交</a>  

這種方法根本沒有href屬性,用style="cursor:pointer;" 產生手型圖標來模擬。

另一種方法:

<a class="bt_3"   href="javascript:void(0)"  id="btnSubmit1" οnclick="submitPage();return false;">提交</a>  

onclick 返回 false ,阻止瀏覽器的默認行爲。也可以達到相同的目的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章