一個表單中的 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 來執行竟然會有一點小麻煩,而顯得沒有達到使用者的需求。有解嗎?