如何用js改变平板电脑的输入焦点?

Posted

技术标签:

【中文标题】如何用js改变平板电脑的输入焦点?【英文标题】:How to change the input focus on a tablet with js? 【发布时间】:2012-04-11 22:47:17 【问题描述】:

当达到输入的最大长度时,我正在使用下面的 javascript 将焦点更改为表单中的下一个输入。它适用于台式机,但不适用于平板电脑。当前输入失去焦点时,虚拟键盘会自行关闭,下一个输入框不会获得焦点。

有谁知道如何在不使用本机“下一步”按钮的情况下更改平板电脑上的输入焦点?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, user-scalable=no, maximum-scale=1.0" />
<title>inpuTest</title>

<script language="JavaScript">
function myCtrl(elmnt)

if (elmnt.value.length==elmnt.maxLength)
    
    next=elmnt.tabIndex
    if (next<document.frmContact.elements.length)
        
        document.frmContact.elements[next].focus()

        
    

</script>

<style type="text/css">
form
    margin:0 auto;
    background-color:#CCC;
    padding:2%;
    border:1px solid #999;


form input,textarea
    width:96%;

</style>
</head>
<body>
<form name="frmContact" method="post">
  <strong>1. Your name:</strong> <span class="times_17">(max-lenght 4)</span><br /><br />
  <input name="formName" tabindex="1" value="" placeholder="Name" maxlength="4" type="text" onFocus="this.select()" onkeyup="myCtrl(this)"><br /><br />
  <strong>2. Your email:</strong> <span class="times_17">(required)</span><br /><br />
  <input id="formEmail" name="formEmail" tabindex="2" value="" placeholder="example@mail.it" maxlength="4" type="text" onFocus="this.select()" onkeyup="myCtrl(this)"><br /><br />
  <strong>3. Your number:</strong><br /><br />
  <input name="formWebsite" tabindex="3" placeholder="Only numbers 1234" maxlength="4" type="number" onFocus="this.select()" onkeyup="myCtrl(this)"><br /><br />
  <strong>4. Your comments:</strong> <span class="times_17">(required)</span><br /><br />
  <textarea name="formComment" tabindex="4" id="comment" cols="45" rows="5" class="input2"></textarea>
</form>
</body>
</html>

【问题讨论】:

我在JSFiddle 中复制了您的代码,但它在 chrome 和 firefox 中不起作用... 将 html 框中的所有代码粘贴到 JsFiddle 中即可。谢谢你的回答。 对不起,会看的 【参考方案1】:

在 ipad 上无法做到这一点。我不知道android是否有,但我想你也想在ipad上拥有它。正是因为 Apple 的设计,Mobile Safari 中的一些焦点事件被忽略了。

您可以在 Stack Overflow 上查看这些问题:

Jquery focus on text box on label click autofocus with keyboard in an ipad html5 site JQuery focus() method on the ipad

或者看看艾伦派克所说的quora:

根据设计,Mobile Safari 中的一些 focus() 事件会被忽略。很多 网站会不必要地做 focus() 并且调出键盘是 缓慢/侵入性。这在使用框架时特别烦人 像 SproutCore 在基于超时的运行循环中完成工作。韩 Wei 的回答很好地了解了如何解决这个问题。

很抱歉,我没有找到适用于 android 的相同链接。可能是因为它在那里工作,或者似乎没有人对 android 上的这种东西感兴趣:)

【讨论】:

以上是关于如何用js改变平板电脑的输入焦点?的主要内容,如果未能解决你的问题,请参考以下文章

如何用js删除表格一行或者多行

如何用人脸识别登陆电脑系统

如何用手机测试本地开发的项目?

如何用网线实现两台电脑之间的文件共享

如何用cmd命令实现电脑自动关机?

vb 如何用上下左右键改变控件位置,但是不改变焦点位置?