0

此脚本检查表单是否已正确填写,但toggle()函数不断被触发(至少在 FireFox 中)。在下面的示例中,“现在在这里”在表单有效后继续显示(即所有字段都有一些文本)。

<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当它触发警报窗口时被搞砸了,因为焦点从文本字段变为窗口并且当按下确定时焦点又变回文本字段?

更新:我在 Bugzilla 中找到了它。你可以投票给它。2001年底就被报道了,为什么豆子这么长还不修???

4

3 回答 3

1

看起来您希望该功能在正确填写表单后将提交从禁用更改为启用。每次onKeyUp使用所有三个输入调用该函数时都应该触发该函数,因为您在所有三个输入中都调用它。

我的 jsfiddle ( http://jsfiddle.net/BhaeG/ ) 仅alert("now here")在 if 语句的所有条件都正确时触发。

除非我真的错过了什么,否则它似乎按设计工作。

于 2013-01-31T22:42:07.553 回答
1

在 FireFox 中,如果您在警报窗口上按 Enter 键,它会触发onKeyUp

于 2013-01-31T23:39:06.827 回答
0

我通过使用 onkeydown 而不是 onkeyup 解决了这个问题。YMMV。

于 2014-06-17T18:46:50.083 回答