Держите клавиатуру iOS открытой, пока работает функция keyup

Этот вопрос касается веб-разработки iOS.

У меня есть функция, которая запускается прослушивателем клавиш в поле ввода «Поиск». Он отлично работает на настольных компьютерах, ноутбуках, телефонах Samsung Galaxy и Sony Xperia, но не на iPhone или iPad. Всякий раз, когда функция запускается, виртуальная клавиатура закрывается. Одно потенциальное исправление, о котором я думал, состояло в том, чтобы переопределить focus на входе id='newsearch' как последнюю строку функции, но это, похоже, ничего не дало.

Кто-нибудь знает, как держать клавиатуру открытой, пока функция работает в ios?

См. 3 фрагмента кода ниже:

Строки, запускающие функцию:

<tr><td colspan='3'>Search <input type='text' autofocus id='newsearch'></input></td>

    <h2>Search Results</h2>
    <div id="newsearch-data"> </div>

<script src="http://code.jquery.com/jquery-1.8.0.min.js"> </script>
<script src="addplayer.js"> </script>

Сама функция: addplayer.js

$('input#newsearch').on('keyup', function(){
    var newsearch = $('input#newsearch').val();
    if ($.trim(newsearch)!= "") {
        $.post('newsearch.php', {newsearch: newsearch}, function(data) {
            $('div#newsearch-data').html(data);
        });
    }
});
            document.getElementById("newsearch").focus();

Файл php, на который ссылается функция: newsearch.php

if (isset($_POST['newsearch']) && $_POST['newsearch'] != NULL){
    require 'dbconnect.php';

    $term = $_POST['newsearch'];
    $terms = "%" . $term . "%";

    $_SESSION['players'] = array();

    $query = ("SELECT * FROM players WHERE Username LIKE '$terms' OR Phonenumber LIKE '$terms' OR PlayerID LIKE '$terms'");
    $run_query = mysqli_query($dbcon, $query);

        echo "<table border='1px'><tr><th>Player ID</th><th>Name</th><th>Action</th></tr>";

            while ($dbsearch = mysqli_fetch_assoc($run_query))
             {
                $dbu = $dbsearch['Username'];
                $id = $dbsearch['PlayerID'];
                $func = "add(" . $id . ", Brad Henry )";
             array_push ($_SESSION['players'],$dbsearch['PlayerID']);
             echo "<tr><td>".$id ."</td><td>".$dbu."</td><td><input type=\"submit\" id=\"PlayerAdded".$id."\" autofocus value=\"Add\" onclick=\"add('".$id."','".$dbu."');\"></input></td></tr>";
             }

person Tunna182    schedule 22.10.2015    source источник


Ответы (2)


Попробуйте установить фокус на поле.

$('input#newsearch').on('keyup', function(){
    var field = $(this);
    var newsearch = field.val();
    if ($.trim(newsearch)!= "") {
        $.post('newsearch.php', {newsearch: newsearch}, function(data) {
            $('div#newsearch-data').html(data);
            field.focus();
        });
    }
});
person Marino    schedule 05.11.2015
comment
Я действительно ценю это предложение, но я только что проверил его, и, если честно, это не имело значения. - person Tunna182; 05.11.2015

Не могу поверить, что мне понадобилось так много времени, чтобы это осознать. Последнее «эхо» в newsearch.php содержит атрибут autofocus на кнопке добавления... Я удалил это, и теперь это работает.

person Tunna182    schedule 08.11.2015