Po kliknięciu tagu <input> poniżej, alert() w poniższym kodzie pojawia się po kliknięciu przycisku "OK" alert().

Co muszę zrobić, aby zatrzymać alert po kliknięciu przycisku "OK"? Mój kod musi wyjść z tagu wejściowego i zrobić inne rzeczy.

....
<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>
1
nam 28 czerwiec 2017, 02:43

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć ścieżki bilansowej Boolean, jeśli już się skoncentrowałeś:

    ....
<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>

Po wykonaniu możesz ustawić wartość z powrotem na false.

Alternatywnie, możesz usunąć przewodnika i zapomnieć o tym w razie potrzeby.

0
Alexander Higgins 27 czerwiec 2017, 23:47

Focus wraca do input po zamknięciu alert(). Jeśli chcesz upewnić się, że raz alert()} Tracę:

var alerted = false;

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

  if (! alerted) {
    alerted = true;

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

    alert(t);
  }
});

Lub po prostu użyj console.log() zamiast tego, a unikaj alert() Albeter.

$(".txtInput").focusin(function () {
  var t = $(this).val();
  console.log(t);
});
0
Paul Roub 27 czerwiec 2017, 23:48

To dlatego, że gdy wejście skupi się, alert pojawia się, a następnie wejście traci ostrość. Po zamknięciu pola alertu, ostrość wraca do tego, co było wcześniej (wejście), więc wejście dostanie ostrość, a alert pojawia się, ...

Po prostu pozbyć się. Jeśli chcesz debugować użycie console.log .

1
ibrahim mahrir 27 czerwiec 2017, 23:50