Javascript - onblur 事件在验证中创建无限警报循环



如何使 onblur 每次验证显示 1 个警报?它一直在创建无限循环。我知道我可以使用onchange,但我想用onblur事件来做到这一点。我听说过类似(this.id)方法的东西,但我不知道如何在我的代码中做到这一点。我也听说过标志,但我不知道标志有什么作用,而且我不知道如何将它们放入我的代码中。

<form>
        <input type="text" id="liczba1" /><br/>
        <input type="text" id="liczba2" /><br/>
        <input type="text" id="liczba3" />
    </form>
        <input type="submit" id="button" value="Prześlij" onclick="SprawdzWieksze()"/>
    <div id="wynik"></div>
    <script>
    var a = document.getElementById("liczba1");
    var b = document.getElementById("liczba2");
    var c = document.getElementById("liczba3");
        function Waliduja()
        {
            if(isNaN(a.value))
            {
                alert("Nie może być literą!");
                document.getElementById("liczba1").focus();
            }
            else
            {
                return false;
            }
        }
         function Walidujb()
        {
            if(isNaN(b.value))
            {
                alert("Nie może być literą!");
                document.getElementById("liczba2").focus();
            }
            else
            {
                return false;
            }
        }
         function Walidujc()
        {
            if(isNaN(c.value))
            {
                alert("Nie może być literą!");
                document.getElementById("liczba3").focus();
            }
            else
            {
                return false;
            }
        }
        function SprawdzWieksze()
        {
                var a = Number(document.getElementById("liczba1").value);
        var b = Number(document.getElementById("liczba2").value);
        var c = Number(document.getElementById("liczba3").value);
            if(a > b && a > c)
            {
                document.getElementById("wynik").innerHTML = "Największa liczba to: "+a;
            }
            if(b > a && b > c)
            {
                document.getElementById("wynik").innerHTML = "Największa liczba to: "+b;
            }
            if(c > b && c > a)
            {
                document.getElementById("wynik").innerHTML = "Największa liczba to: "+c;
            }
        }
    a.onblur = Waliduja;
    b.onblur = Walidujb;
    c.onblur = Walidujc;
    </script>

但是为什么你只想在onblur事件上这样做呢?循环发生是因为 focus(),就像@Viney所说的那样。

使用 onchange ,应用程序在没有循环的情况下执行。

最新更新