4

每当焦点以编程方式从一个输入字段移动到另一个输入字段时,我想保持键盘在 iphone 上可见。当我第一次设置焦点时,代码工作正常,但随后没有这样做。

这是一段代码。知道如何保持键盘可见吗?现场演示http://navtest.0fees.net/del/,在 iphone 或 ipad 上打开。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<style>
body{background-color: #efefef;}
input:focus{ color:red; font-size:30px; background: rgba(0,0,0,0.2); }
.button {
  font-family: Arial; color: #ffffff; font-size: 35px; padding: 10px;
  text-decoration: none; -webkit-border-radius: 28px; -moz-border-radius: 28px;
  -webkit-box-shadow: 0px 1px 3px #666666; -moz-box-shadow: 0px 1px 3px #666666;
  text-shadow: 1px 1px 3px #666666; border: solid #005157 2px;
  background: -webkit-gradient(linear, 0 0, 0 100%, from(#c3f7f4), to(#095461));
  background: -moz-linear-gradient(top, #c3f7f4, #095461);
}
.button:hover { background: #19ad02; }
</style>
    <head>
        <title>I Pad</title>
        <script type="text/javascript" src="./jquery-1.7.2.min.js"></script>
    </head>
    <body>
        <button type="button" name="" id="name" value="" class="button">Submit</button>
        <input type="text" id="kb" value="" class="button"/>
        <input type="text" id="kb1" value="" class="button"/>
        <script type="text/javascript">
                $('#name').click(function(){            
                    $('#kb').focus();
                    $('#kb').blur(); //not important
                    $('#kb1').focus();
                });
        </script>
    </body>
</html> 
4

2 回答 2

1

* 编辑 #2 *

看起来这个问题没有解决方案(至少到目前为止)。

*结束编辑#2 *

我认为当您在 Safari 中“模糊”一个字段时,它会隐藏键盘,然后当您“聚焦”一个新字段时,它会显示键盘。因此,除非您正在做一些奇怪的事情(例如在聚焦新领域后手动模糊旧领域),否则我真的不明白您为什么会有您描述的行为。

* 编辑 *

只是查看了您的代码并意识到您做的最后一件事是焦点,这应该使键盘恢复正常。但是,您正在进行手动模糊;我会先尝试删除它,看看它是否能解决问题。

*结束编辑*

解决它的一种可能解决方案是从事件处理程序e.preventDefault()内部使用。onBlur这应该防止隐藏键盘的浏览器默认行为。

于 2012-07-19T20:54:02.370 回答
0

我认为 iPhone 的设计方式是仅通过某些用户操作来触发键盘。这就是为什么通过手动单击按钮可以将焦点移动到输入框并打开键盘,但是任何其他以编程方式单击按钮并从按钮的事件处理程序设置焦点到输入框以打开键盘的尝试都不起作用。

我想我剩下的唯一选择是将所有输入框的属性设置为只读,然后单击它会在其顶部打开一个透明输入框。然后从透明输入框中取值并将其设置为我想要的任何只读输入框。

随后不断将透明输入框的位置更改为我为其设置值的任何只读输入框。

如果有人对此有更好的想法,我愿意接受建议。

于 2012-07-19T23:26:29.660 回答