2011-04-28 25 views
0

我已在我的開發系統上實現了以下代碼版本。使用document.activeElement和onChange事件僅在文本框更改完成後驗證文本框

功能validateTextBox(textBoxId){
   變種的textBox =的document.getElementById(textBoxId);
   如果(document.activeElement.id = textBox.id!){
        做驗證
   }
}

的HTML類似:
<input type="text" id="ValidateMe" onChange="validateTextBox('ValidateMe');"/>

這個想法是隻有在用戶完成編輯文本框之後才進行驗證,並且與onBlur事件不同,驗證僅在文本框的值實際發生更改時觸發。

它似乎工作我只是在沒有一些審查和反饋使用它的懷抱。 我還沒有看到任何類似的代碼示例。所以請給我你的想法實施和任何可能的想法。

謝謝

回答

0

這是一個很好的解決方案。請記住,onchange事件通常只會在焦點發生變化時觸發(例如,onblur)

如果您想在用戶輸入時進行驗證,則可以使用onkeydown/onkeyup/onkeypress,但這種方式比較困難。

此外,您可以使用this讓你不用一個ID分配給每個字段並記住它傳遞到validate函數:

function validate(input_element) { 
    alert(input_element.value) 
} 
<input type="text" name="name" onchange="validate(this);"/> 
+0

確定這是我的不好。我解決了一個不存在的問題。難怪它工作得很好。我想我在使用MS Access時正在考慮onChange事件。 無論如何,感謝您的快速回復,我會考慮在我的代碼中使用'this'。 再次感謝 – lb0flesh 2011-04-28 21:36:15