0

このスクリプトは、フォームが正しく入力されているかどうかを確認しますが、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が長く、修正されていないのですか?

4

3 に答える 3

1

FireFoxでは、アラートウィンドウでEnterキーを押すと起動しますonKeyUp

于 2013-01-31T23:39:06.827 に答える
1

フォームが正しく入力されたときに、送信を無効から有効に変更する関数が必要なようです。onKeyUpこの関数は、3 つの入力すべてで呼び出しているため、3 つの入力すべてで が呼び出されるたびに起動する必要があります。

私の jsfiddle ( http://jsfiddle.net/BhaeG/ )alert("now here")は、if ステートメントのすべての条件が正しい場合にのみ起動します。

本当に何かが欠けていない限り、設計どおりに機能しているようです。

于 2013-01-31T22:42:07.553 に答える
0

onkeyup の代わりに onkeydown を使用して、この問題を回避しました。YMMV。

于 2014-06-17T18:46:50.083 に答える