当我点击下面的<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>
答案 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);
});