2015-10-22 10 views
9

Diese Frage betrifft iOS Web Dev.Keep iOS-Tastatur geöffnet, während Keyup-Funktion ausgeführt

Ich habe eine Funktion, die von einem Keyup-Listener in einem "Suche" Eingabefeld ausgelöst wird. Es funktioniert perfekt auf Desktops, Laptops, Samsung Galaxy Handys und dem Sony Xperia, aber nicht in iPhone oder iPad. Wenn die Funktion ausgeführt wird, wird die Soft-Tastatur geschlossen. Eine mögliche Lösung, an die ich gedacht habe, war, die Adresse focus am Eingang id='newsearch' als letzte Zeile der Funktion zu ändern, aber das schien nichts zu tun.

Kann jemand die Tastatur offen halten, während die Funktion in ios ausgeführt wird?

Siehe 3 Code-Schnipsel unter:

Die Linien, die die Funktion auslösen:

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

Die Funktion selbst: 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(); 

die PHP-Datei Die Funktion bezieht sich auf: 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

Welche iOS-Version verwenden Sie? Funktioniert gut für mich, wenn ich diese Seite in iOS 8 öffne. Http://codepen.io/hampusohlsson/pen/mejMpw – hampusohlsson

+0

@hamohl Ich bin auf iOS 9, aber es wurde auf verschiedenen iOS-Geräten getestet. Es führt die Suche aus, aber die Tastatur schließt sich nach dem ersten Tastendruck etwa eine halbe Sekunde. Wenn Sie also einen Namen mit etwa 15 Zeichen suchen, wird die Tastatur ca. 5-7 Mal geschlossen und der Benutzer muss die Sucheingabe jedesmal abwählen. Welches Gerät verwendest du? – Tunna182

+0

Ich benutze iPhone 5S iOS8. Sie können versuchen, ein Timeout zu verwenden, um zu verhindern, dass es mehrere Anfragen sendet, bevor Sie mit der Eingabe fertig sind, zumindest um zu sehen, ob es hilft. Schauen Sie sich den aktualisierten Stift oben an :) – hampusohlsson

Antwort

0

Ich kann nicht glauben, dass dies dauerte so lange zu realisieren. Das letzte 'Echo' in newsearch.php enthält das autofocus Attribut auf der Schaltfläche zum Hinzufügen .... Ich habe das entfernt und jetzt funktioniert es.

0

Versuchen Sie, Fokus auf Feld zu setzen.

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

Ich schätze den Vorschlag sehr, aber ich habe ihn gerade getestet und es schien keinen Unterschied zu machen, um ehrlich zu sein. – Tunna182