猿问

javascript 表单获取焦点,明明只有一条alert,为何谷歌浏览器点击确定仍然会不断弹屏?

<form action="" method="">

         <input type="text" id="txt" />

         <input type="radio" id="rad" />

         <input type="checkbox" id="cBox" />

         <input type="button" value="button" id="btn" />

</form>

<script type="text/javascript">

         var oTxt=document.getElementById("txt");

         var oBtn=document.getElementById("btn");

         oBtn.onclick = function(){ oTxt.focus(); };

         oTxt.onfocus=function(){

         alert("我获得焦点了");

         };

</script>


qq_唔叫咩_0
浏览 1721回答 3
3回答

码农2号

因为你点击确定后,焦点还是没变,又触发了一次,往复循环。调试的话用console吧,网页需要的话,弹出一个提示也不错。非要用alert的话,立个flag啊,进入函数时候,判断flag值,flag==0时候flag==1,flag==1时候不执行函数后面的就行了。

pardon110

基础知识:onclick,onfocus 事件句柄  前者鼠标点击某个对象产生事件,后者元素获得焦点后执行事件obj.focus()  给指定的元素设置焦点 (注只有能够响应用户操作额元素才可以设置焦点,input是其中之一)分析:1.input文本类型获取焦点,出现弹窗  2.点击btn,会给文本类型input获取焦点。所以明了:点击->焦点获取->弹窗出现  由于你点击之后,并没有提供后续的解除焦点在input:text上的事件绑定,所以弹窗一直存在。你这种情况,就好像开了一辆没有刹车器的车,只要开始了就停不下来。

Gotta

我猜是这样…… 当你点击alert的确定的时候……焦点会转到确定按钮上,alert消失后……焦点又回到了Input上,,所以再次触发onfocus事件……都是猜的。。。。没有科学依据
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答