2015-10-22 11 views
9

To pytanie dotyczy programisty iOS.Zachowaj otwartą klawiaturę iOS, gdy działa funkcja klawiatury numerycznej

Mam funkcję uruchamianą przez detektor keyup w polu wejściowym "Wyszukaj". Działa idealnie na komputerach stacjonarnych, laptopach, telefonach Samsung Galaxy i Sony Xperia, ale nie na iPhonie czy iPadzie. Po uruchomieniu funkcji klawiatura zostanie zamknięta. Jedną potencjalną poprawką, o której myślałem, było ponowne wpisanie focus na wejściu id='newsearch' jako ostatniej linii funkcji, ale nic z tego nie wynikało.

Czy ktoś wie, jak utrzymać klawiaturę otwartą, gdy funkcja działa w ios?

Zobacz 3 fragmenty kodu poniżej:

liniach, które wyzwalają funkcję:

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

Funkcja sama: 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(); 

Plik php funkcja odnosi się do: 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>"; 
      } 
+0

Jaką wersję systemu iOS używasz? Działa dobrze dla mnie, gdy otwieram tę stronę na iOS 8. http://codepen.io/hampusohlsson/pen/mejMpw – hampusohlsson

+0

@hamohl Jestem na ios 9, ale testowałem go na różnych urządzeniach z systemem iOS. Wywołuje wyszukiwanie, ale klawiatura zamyka się około pół sekundy po pierwszym naciśnięciu klawisza, więc podczas wyszukiwania nazwy zawierającej 15 znaków zamyka ona klawiaturę około 5-7 razy, a użytkownik musi każdorazowo odznaczyć wyszukiwanie. Z którego urządzenia korzystasz? – Tunna182

+0

Używam iPhone'a 5S iOS8. Możesz spróbować użyć limitu czasu, aby uniemożliwić wysyłanie wielu żądań przed zakończeniem pisania, a przynajmniej sprawdzić, czy to pomaga. Sprawdź zaktualizowany długopis powyżej :) – hampusohlsson

Odpowiedz

0

Nie mogę uwierzyć, że tak długo zajęło mi zrozumienie. Ostatnie "echo" w newsearch.php zawiera atrybut autofocus na przycisku dodawania ... Usunąłem to i teraz działa.

0

Spróbuj ustawić ostrość na polu.

$('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

Naprawdę doceniam sugestię, ale właśnie ją przetestowałem i nie wydaje się, aby różnica była szczera. – Tunna182

Powiązane problemy