简体   繁体   English

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

[英]Javascript - onblur event create infinite alerts loop in validation

How to make onblur to show 1 alert per validation? 如何使onblur每次验证显示1个警报? It creates infinite loop all the time . 它始终会产生无限循环。 I know I can use onchange but I want to do this with onblur event. 我知道我可以使用onchange,但是我想通过onblur事件来做到这一点。 I heard about something like ( this.id ) method but I don't know how to do it in my code. 我听说过类似( this.id )方法的内容,但我不知道如何在我的代码中进行操作。 I heard about flags too, but I don't know what flags do, and again I don't know how to put them in my code. 我也听说过标志,但是我不知道标志是做什么的,而且我也不知道如何将它们放入代码中。

<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>

But why do you want to do this only on onblur event? 但是为什么只在onblur事件上这样做呢? The loop occurs because the focus(), like @Viney said. 之所以会发生循环,是因为focus()就像@Viney所说的那样。

Using onchange , the application executes without the loop. 使用onchange ,应用程序将无循环执行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM