このスクリプトは、フォームが正しく入力されているかどうかを確認しますが、toggle()
関数は起動し続けます(少なくともFireFoxでは)。次の例では、フォームが有効になった後も「now here」が表示され続けます(つまり、すべてのフィールドにテキストが含まれています)。
<script type="text/javascript">
<!--
function toggle()
{
if(document.getElementById('username').value.length > 1 && document.getElementById('pw1').value.length > 1 && document.getElementById('pw2').value.length > 1 && (document.getElementById('pw1').value == document.getElementById('pw2').value))
{
alert("now here")
document.getElementById('submit').disabled = false
}
}
//-->
</scipt>
Username:<input type="text" name='username' id='username' maxlength="30" onkeyup="toggle()"/><br />
Password:<input type="password" name="pw1" id="pw1" onkeyup="passwordCheck(document.getElementById('pw1'), document.getElementById('pw2')); toggle()"/><br />
Confirm password:<input type="password" name="pw2" id="pw2" onkeyup="passwordCheck(document.getElementById('pw1'), document.getElementById('pw2')); toggle()"/>
なぜ私は傷つきonkeyup
続けますか?これは、ユーザーがキーから指を離さないかのようです。onkeyup
フォーカスがテキストフィールドからウィンドウに変わり、[OK]を押すとフォーカスがテキストフィールドに戻るため、アラートウィンドウをトリガーすると失敗するためですか?
更新:ここBugzillaで見つけました。あなたはそれに投票することができます。2001年後半から報告されていますが、なぜBeanが長く、修正されていないのですか?