Chrome снова и снова запускает OnBlur - PullRequest
0 голосов
/ 01 июня 2018

Это код, который запускает Onblur снова и снова только в Chrome, отлично работает в IE.В Firefox возникает проблема при создании двух элементов ввода ... Может кто-нибудь помочь мне в этом?Мне нужно предупреждение о размытии (в реальном коде мы проверяем наличие дубликатов в таблице и предупреждаем, если дубликат найден, этот код является лишь примером, демонстрирующим мою необходимость) и после нажатия «ОК» в предупрежденииЯ хочу вернуть фокус.Пожалуйста, посмотрите правильное поведение в IE.

  $(document).ready(function() {
    $("button").click(function() {
      $("div").append('<input type="text" name="txtCompanyName" maxlength="100" class="Company" style="margin-bottom:0px;width:170px"/>')
    });

    // With on():

    $("div").on("blur", ".Company", function() {
      alert($(this).text());
      $(".Company").focus();
    });
  });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<html>

<head>
</head>

<body>

  <div></div>
  <button>generate new element</button>

</body>

</html>

Интересная вещь - , когда Chrome запускает событие многократно, и вам надоест нажимать «ОК» снова и снова, затем переходите к другимвкладку в Chrome, а затем вернуться на эту вкладку, нажмите «ОК», проблема будет решена для этого случая размытия.MAGIC ??

1 Ответ

0 голосов
/ 01 июня 2018
$("div").on("blur", ".Company", function() {
  alert($(this).text());
  $(".Company").focus();
})

фокус и размытие эффективно противоположны.так что если вы не в фокусе (размытие), то вы снова переключаете его на Company, и Company добавляется в div.так что это зацикливание до бесконечности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...