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

标签 javascript html

如何使 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,应用程序在没有循环的情况下执行。

关于Javascript - onblur 事件在验证中创建无限警报循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41805579/

相关文章:

javascript - Angular 2 : Binding Data using Elasticsearch Client

javascript - 如何遍历对象并将键插入数组?

javascript - Bootstrap 模态提交我的表单

css - 如何将我的导航选项均匀地分成 2 行?

android - chrome安卓浏览器只显示部分网页宽度

javascript - 如何为每个选项填充 "value"参数的下拉框?

javascript - for-in 循环在后续执行中是否以相同的顺序迭代?

html - EF MVC Razor : How to decode HTML Encoded strings of a PartialView output?

HTML 表格 : Set width of column to fit floating content

javascript - 即使设置了滚动功能,暂停按钮也会暂停