3

我正在创建一个 PhoneGap 应用程序。我必须将焦点放在页面加载上的 textarea 上:

我用过

<body onload="newNoteOnLoad();">
<div class="container">
    <div class="header">
        <h1 id="noteHeader">
            New Note</h1>
        <a href="Books.html" class="back" id="back"></a><a href="#" class="done" id="bttnDone" onclick="addNewNote();">
        </a>
    </div>
    <div class="mainhelp">
        <p>
          <textarea id="txtNote" cols="115" rows="15"></textarea>
        </p>
    </div>    
</div>
<script type="text/javascript">
  alert('focus');
  document.getElementById("txtNote").focus();
</script>

在页面加载功能中。但这对我不起作用。谁能帮帮我?

4

3 回答 3

15

从 iOS 6 开始,UIWebView 类有一个名为“keyboardDisplayRequiresUserAction”的属性。如果您想将此设置为 false,您可以通过 phonegap config.xml 访问它:

<preference name="KeyboardDisplayRequiresUserAction" value="false" />

默认值为 true,这意味着以编程方式聚焦任何文本表单元素都不起作用。

更多信息:http: //community.phonegap.com/nitobi/topics/calling_focus

于 2013-06-03T15:54:33.063 回答
1

您指的是尚未加载到 DOM 的元素。出于这些目的,例如,jQuery 有.ready()event。在 HTML 中的 'myControl' 元素下加载相同的脚本,看看它是否有效或使用 jQuery 来执行此操作。

JavaScript 解决方案的工作原理是这样的,当您在您所指的 HTML 元素之后加载它时,例如:

  <textarea id="myControl"></textarea>
    <script>
      document.getElementById('myControl').focus(); 
    </script>

使用 jQuery,它看起来像这样,您可以将它加载到页面上的任何位置:

$(document).ready(function() {
   $('#myControl').focus();
});
于 2012-08-07T09:47:44.980 回答
1

如果你想让键盘显示你会遇到很大的麻烦,因为焦点事件会被异步触发。我只是运气好让键盘在用户输入上启动,例如touchstart, touchend&click

于 2012-08-07T09:52:47.817 回答