focusin事件中的alert()会继续弹出

时间:2017-06-27 23:43:10

标签: javascript jquery html

当我点击下面的<input>标记内部时,单击&#34;确定&#34;后面的代码中的alert()会一直显示。 alert()的按钮。

单击&#34;确定&#34;停止警报后我需要做什么?按钮?我的代码需要退出输入标记并执行其他操作。

....
<input type="text" class="txtInput" value="Test for focusin event" />
....
<input type="button" id="goBtn" value="GO" />
<script>
$(".txtInput").focusin(function () {
    var t = $(this).val();
    alert(t);
});
<script>

3 个答案:

答案 0 :(得分:1)

这是因为当输入聚焦时,警报会弹出,然后输入失去焦点。关闭警报框时,焦点会回到之前的状态(输入),因此输入会获得焦点,并弹出警报,......

摆脱它。如果要调试使用console.log

答案 1 :(得分:0)

如果您已经集中注意力,可以使用布尔标记轨道:

    ....
<input type="text" class="txtInput" value="Test for focusin event" />
....
<input type="button" id="goBtn" value="GO" />
<script>
var focused=false;
$(".txtInput").focusin(function () {
    if(focused) return;
    focused=true;
    var t = $(this).val();
    alert(t);
});
<script>

执行后,您可以将值设置为false。

或者,您可以取消绑定处理程序并在需要时重新绑定它。

答案 2 :(得分:0)

input对话框关闭后,焦点返回alert()。如果您想确保只alert()一次,请跟踪:

var alerted = false;

$(".txtInput").focusin(function () {

  if (! alerted) {
    alerted = true;

    var t = $(this).val();

    alert(t);
  }
});

或者仅使用console.log(),并完全避免alert()弹出窗口和多个焦点问题。

$(".txtInput").focusin(function () {
  var t = $(this).val();
  console.log(t);
});