日期:2014-05-17  浏览次数:20688 次

请教,<input onfocus="alert('focus')" value="focus">停不了
写系统网页的时候,无意中发现,在<input type="text">里面,如果有onfocus事件,而事件触发的function里面,如果有alert的话,就会不断重复那个alert的弹出窗口。
我的浏览器是360的,版本3207。我试了一下IE8,就不会出现这个问题。而且,好像只有我的电脑会发生这种情况。
代码如下:
HTML code

<html>
<body class="bodyIndex">
    <input class="textbox" id="txt" onfocus="check2()">
    <input onblur="check1()" id="txt1" class="textbox">
<script language="javascript">
    function check3(){
        alert("check3,click");
    }
    
    function check2(){
        txt.value+="a";
        ///alert("check2.focus");        //*
    }
    
    function check1(){
        alert("check1,blur");
        if (!checkNumber(txt1,"",0,1,0))
            txt.value+=", input error.";
    }
</script>
</body>
</html>


如果把*那行的//去掉的话,就会自动循环起来,字母“a”会不断增加。
请问哪位知道是什么回事?

------解决方案--------------------
你的函数自己就是这么写的啊。每次获得焦点就执行这些操作。

你想完成什么功能?
------解决方案--------------------
应该是你的js写法不标准导致ie8脚本出错,致使你的alert无法继续运行。
txt.value+="a";你的意思是id="txt"的input的value=a;但是这么写在其他浏览器中无法识别txt这个变量,应该改为document.getElementById('txt').value='a';
------解决方案--------------------
当然了,点击确定后焦点又回到textbox中,怎么可能停的下来呢
------解决方案--------------------
探讨

当然了,点击确定后焦点又回到textbox中,怎么可能停的下来呢

------解决方案--------------------
探讨
复3楼,问题是,在我身边的其他同事的电脑,都不会这样。他们也是用360浏览器,只是版本不同而已。
麻烦你试试,在你的电脑上,是不是也会这样?

------解决方案--------------------
哎,大哥,那说明IE版本可能不同,但一般情况下,都是会出现这种情况的,你不去执行alert()只是给其赋值时或触发焦点事件时不失去焦点,那么它只会执行一次
------解决方案--------------------
这个无需测试,你只要不要用alert(),它文本不失去焦点,就不会出现这种情况,或者你用onfocus="document.getElementById("").value="a";"试试,