Событие jQuery .change () не работает на мобильном телефоне с автозаполнением - PullRequest
0 голосов
/ 03 октября 2019

Я использую автозаполнение в текстовом поле. Как только они выбирают выпадающий список автозаполнения и покидают это текстовое поле, он автоматически заполняет все остальные текстовые поля. Все это работает на ПК, но не работает на мобильной веб-странице. Я пришел к выводу, что это как-то связано с плагином ui-autocomplete, он не позволит мобильному браузеру забрать событие изменения.

Я просматривал похожие случаи, но не могу решить проблему. Я очень новичок в jQuery

Если я откомментирую последний плагин, будет изменено событие изменения, но автозаполнение не будет работать.

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script type="text/javascript" src="https://code.jquery.com/ui/1.10.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/themes/base/minified/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">

Текстовое поле:

<tr><td>Part Name: </td><td><input type="text" name="PartNum" class="auto" id="pn" style="width:250px" required></td></tr>

    <script type="text/javascript">
        $(function() {
                $(".auto").autocomplete({
                    source: "autocomplete.php",
                minLength: 1
            });
        });
    </script>

Изменить событие

$('#pn').change(function(e) {
        e.preventDefault();
        myrequest();
    });

Опять же, это хорошо работает на ПК, но не работает на мобильных устройствах. Любая помощь приветствуется.

1 Ответ

1 голос
/ 03 октября 2019

JQueryUI Autocomplete имеет событие select (), которое срабатывает при выборе элемента. Это лучше использовать, потому что .change (), во-первых, работает, когда пользователь фокусируется на элементе, во-вторых, когда автозаполнение создается в поле ввода, само поле заменяется (и скрывается).

Вот как вы бы реализовали событие select ():

$(function() {
   $(".auto").autocomplete({
      source: "autocomplete.php",
      minLength: 1,
      select: function( event, ui ) { myrequest(); }
   });
});

Здесь не требуется предотвращение по умолчанию. Вы можете добавить больше кода в фигурные скобки.

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