2015-10-22 10 views
9

Questa domanda riguarda iOS web dev.Mantieni la tastiera iOS aperta mentre la funzione keyup è attiva

Ho una funzione che viene attivata da un listener keyup in un campo di input "Cerca". Funziona perfettamente su desktop, laptop, telefoni Samsung Galaxy e Sony Xperia ma non su iPhone o iPad. Ogni volta che si esegue la funzione, la tastiera virtuale si chiude. Una potenziale correzione che ho pensato è stata quella di re sull'ingresso id='newsearch' come ultima riga della funzione, ma che non sembra aver fatto nulla.

Qualcuno sa come mantenere la tastiera aperta mentre la funzione è in esecuzione in iOS?

Vedi 3 frammenti di codice qui sotto:

Le linee che attivano la funzione:

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

La funzione stessa: 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(); 

Il file php la funzione si riferisce a: 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

Quale versione di iOS è in esecuzione? Funziona bene per me quando apro questa pagina in iOS 8. http://codepen.io/hampusohlsson/pen/mejMpw – hampusohlsson

+0

@hamohl Sono su iOS 9, ma è stato testato su vari dispositivi iOS. Sta eseguendo la ricerca, ma la tastiera si chiude circa mezzo secondo dopo il primo keyup, quindi quando si cerca un nome con circa 15 caratteri, si chiude la tastiera circa 5-7 volte e l'utente deve deselezionare l'input di ricerca ogni volta. Quale dispositivo stai usando? – Tunna182

+0

Sto usando iPhone 5S iOS8. Puoi provare a utilizzare un Timeout per impedire che invii più richieste prima che tu abbia finito di digitare, almeno per vedere se è d'aiuto. Controlla la penna aggiornata in alto :) – hampusohlsson

risposta

0

Non posso credere che ci ho messo così tanto a realizzare. L'ultimo 'echo' in newsearch.php contiene l'attributo autofocus sul pulsante Aggiungi .... L'ho rimosso e ora funziona.

0

Provare a mettere a fuoco sul campo.

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

Ho davvero apprezzato il suggerimento, ma l'ho appena testato e non sembrava fare la differenza per essere onesti. – Tunna182