写系统网页的时候,无意中发现,在<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中,怎么可能停的下来呢
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
哎,大哥,那说明IE版本可能不同,但一般情况下,都是会出现这种情况的,你不去执行alert()只是给其赋值时或触发焦点事件时不失去焦点,那么它只会执行一次
------解决方案--------------------
这个无需测试,你只要不要用alert(),它文本不失去焦点,就不会出现这种情况,或者你用onfocus="document.getElementById("").value="a";"试试,