HTMLフォームを考えてみましょう:
<form action="" method="POST" onsubmit="return checkValidArray()">
<input type="text" name="data" onchange="return validate(this);">
</form>
(IE 6 と Firefox 3 の両方で) 入力フィールドにテキストを入力して送信をクリックすると、入力フィールドに対して onchange イベントが発生しますが、送信ボタンをクリックするまでフォームに対して onsubmit イベントは発生しません。 2 回目 (もちろん、そのときは onchange は起動しません)。つまり、onchange は onsubmit の発火を妨げているようです。
ユーザーがフィールドを出るときにフォームの各フィールドをチェックして、すぐに検証フィードバックを提供し、無効なデータがある場合はフォームの送信を防ぐことが望まれます。
[編集: 両方の検証関数に alert() が含まれていることに注意してください。]
この問題をどのように回避しますか?