【问题标题】:Keep iOS keyboard open while keyup function runs在 keyup 功能运行时保持 iOS 键盘打开
【发布时间】:2016-01-21 17:32:59
【问题描述】:

这个问题是关于 iOS 网络开发的。

我有一个由“搜索”输入字段中的 keyup 侦听器触发的函数。 它在台式机、笔记本电脑、三星 Galaxy 手机和索尼 Xperia 上完美运行,但不适用于 iPhone 或 iPad。每当函数运行时,软键盘就会关闭。我想到的一个潜在解决方法是将输入 id='newsearch' 上的 focus 重新作为函数的最后一行,但这似乎没有任何作用。

有谁知道在ios中运行该功能时如何保持键盘打开?

见下面3个代码sn-ps:

触发函数的行:

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

【问题讨论】:

  • 您运行的是什么版本的 iOS?当我在 iOS 8 中打开此页面时,对我来说效果很好。codepen.io/hampusohlsson/pen/mejMpw
  • @hamohl 我使用的是 ios 9,但它已经在各种 iOS 设备上进行了测试。它正在运行搜索,但键盘在第一次键入后大约半秒关闭,因此当搜索一个包含 15 个左右字符的名称时,它会关闭键盘大约 5-7 次,并且用户每次都必须取消选择搜索输入。您使用的是哪种设备?
  • 我使用的是 iPhone 5S iOS8。您可以尝试使用 Timeout 来防止它在您完成输入之前发送多个请求,至少看看它是否有帮助。查看上面更新的笔 :)

标签: javascript ios iphone soft-keyboard iphone-softkeyboard


【解决方案1】:

尝试将焦点放在字段上。

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

【讨论】:

  • 我非常感谢这个建议,但我只是对其进行了测试,说实话似乎并没有什么不同。
【解决方案2】:

我不敢相信我花了这么长时间才意识到这一点。 newsearch.php 中的最后一个“echo”包含添加按钮上的autofocus 属性....我删除了它,现在它可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2012-06-14
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多