MozTW 討論區 https://forum.moztw.org/ |
|
Firefox 在 blur 和 onblur 的反應…… https://forum.moztw.org/viewtopic.php?f=13&t=14215 |
第 1 頁 (共 1 頁) |
發表人: | 湯瑪士小火車 [ 2006-05-23, 08:39 ] |
文章主題 : | Firefox 在 blur 和 onblur 的反應…… |
一個表單中的 input text 區原本是以 tab 來使其失去 focus 且會進到 tabIndex 所指的下一個區塊去。現在我想設計一個能夠接受 Enter 的 input text 區,同時在 Blur 事件發生時,還會先檢查所輸入的資料是否符合規範。因此在該 input text 的 onBlur 事件中還要指定該執行的 JavaScript function。 整個網頁的原始碼大約如下: 代碼: <html>
<head> <script type="text/javascript"> function checkValue() { if (document.getElementById("valueNeedToBeChecked").value<0) { alert("格式錯誤!"); // Firefox 會在此處發生錯誤 document.getElementById("valueNeedToBeChecked").focus(); } else { document.getElementById("nextInputText").focus(); } } function checkEnter(e) { if (剛剛按下的鍵為 Enter) { // 如果使用者按下的鍵是 "Enter",就使 valueNeedToBeChecked 物件失去 focus,而自動進入該物件的 onBlur 事件 --> 執行 checkValue() document.getElementById("valueNeedToBeChecked").blur(); } } </script> </head> <body> <form id="thisForm"> <input type="text" id="valueNeedToBeChecked" name="valueNeedToBeChecked" onblur="checkValue()" onkeypress="checkEnter(event)"> <input type="text" id="nextInputText"> </form> </body> </html> 以上的程式碼原則上在 IE 中執行的很好,但是在 Firefox 中就會有一點問題。問題是出現在當輸入的格式錯誤時(上例為負數),會出現警告視窗,Firefox 到這裡也還好。但是在按下警告視窗的『確定』鈕後,cursor 並不會在原來的 input text 區出現,如果任意輸入資料也不知道跑到那裡去。一定得用滑鼠將游標設定原來的 input text 去才行。 有人了解我的意思嗎?為何 Firefox 的反應會這樣呢?就差這一點了!這個網頁已經儘量貼近使用者在輸入習慣上的需求,同時我自我要求所寫的程式除了 IE 可以執行外,在 Firefox 下也要能執行無誤。但現在以 Firefox 來執行竟然會有一點小麻煩,而顯得沒有達到使用者的需求。有解嗎? |
發表人: | yuoo2k [ 2006-05-23, 09:50 ] |
文章主題 : | |
雖然我也不清楚為什麼會這樣... 不過根據我寫套件的經驗,遇到這種莫名奇妙作完後結果不在預期中的事情的時候 用 window.setTimeout( MyFunction , 0); 進行非同步處理好像就行了... 試了一下好像真的可以... 把您標註會出錯那行換成以下這樣... 代碼: window.setTimeout( function(){ document.getElementById("valueNeedToBeChecked").focus(); }, 0);
|
發表人: | 湯瑪士小火車 [ 2006-05-23, 11:50 ] |
文章主題 : | 大哥,您太神了! |
真的可以了!大哥,請受小弟一拜。 ![]() 如果用 Error Console 來看,會發現另一個不影響執行結果的小問題: 當使用者按下 Enter 後,會在 checkEnter() 中以 obj.blur() 的方式離開此 function,但是因為最後並沒有 return 回原物件的動作,所以用 Error Console 來檢查的時候會出現警告訊息。訊息如下: 代碼: Error: '
P³å- property XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex] = NS_ERROR_XPC_JS_THREW_STRING Source file: http://localhost/94apply/stuff/fillform.php Line: 73 這樣倒底有沒有關係? |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |