MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-08-23, 05:37

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 3 篇文章 ] 
發表人 內容
文章發表於 : 2006-05-23, 08:39 
離線

註冊時間: 2005-10-28, 23:26
文章: 27
一個表單中的 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 來執行竟然會有一點小麻煩,而顯得沒有達到使用者的需求。有解嗎?


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
 個人資料  
引用回覆  
 文章主題 :
文章發表於 : 2006-05-23, 09:50 
離線
頭像

註冊時間: 2005-08-25, 19:59
文章: 1210
來自: 幻境地帶
雖然我也不清楚為什麼會這樣...
不過根據我寫套件的經驗,遇到這種莫名奇妙作完後結果不在預期中的事情的時候
window.setTimeout( MyFunction , 0); 進行非同步處理好像就行了...

試了一下好像真的可以...
把您標註會出錯那行換成以下這樣...
代碼:
window.setTimeout( function(){ document.getElementById("valueNeedToBeChecked").focus(); }, 0);

_________________
Add Bookmark Here ² | Charset Switcher | Hide Menubar | MClickFocusTab | Personal Titlebar


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
 個人資料  
引用回覆  
 文章主題 : 大哥,您太神了!
文章發表於 : 2006-05-23, 11:50 
離線

註冊時間: 2005-10-28, 23:26
文章: 27
真的可以了!大哥,請受小弟一拜。 :lol:

如果用 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


這樣倒底有沒有關係?


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 3 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 18 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群