2015-10-22 15 views
9

Этот вопрос касается веб-разработчика iOS.Храните открытую клавиатуру iOS при запуске функции keyup

У меня есть функция, которая запускается прослушивателем клавиатуры в поле ввода «Поиск». Он отлично работает на настольных компьютерах, ноутбуках, телефонах 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

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>"; 
      } 
+0

Какая версия iOS вы используете? Прекрасно подходит для меня, когда я открываю эту страницу в iOS 8. http://codepen.io/hampusohlsson/pen/mejMpw – hampusohlsson

+0

@hamohl Я нахожусь на ios 9, но он проходит тестирование на разных устройствах iOS. Он запускает поиск, но клавиатура закрывается примерно через полсекунды после первого нажатия клавиши, поэтому при поиске имени с 15 символами или около того он закрывает клавиатуру примерно 5-7 раз, и пользователь должен каждый раз отменить выбор поиска. Какое устройство вы используете? – Tunna182

+0

Я использую iPhone 5S iOS8. Вы можете попытаться использовать таймаут, чтобы предотвратить отправку нескольких запросов до того, как вы закончите печатать, по крайней мере, чтобы узнать, помогает ли это. Проверьте обновленное ручку выше :) – hampusohlsson

ответ

0

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

0

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

$('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(); 
     }); 
    } 
}); 
+0

Я очень ценю это предложение, но я только что его протестировал, и, похоже, это не имеет значения, если честно. – Tunna182