document.getElementById('myControl').focus() 在 PhoneGap 中不起作

document.getElementById('myControl').focus() not working in PhoneGap

本文关键字:PhoneGap getElementById myControl document focus      更新时间:2023-09-26

我正在创建一个PhoneGap应用程序。我必须在页面加载的文本区域上设置焦点:

我用过

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

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

从iOS 6开始,UIWebView类具有一个名为"keyboardDisplayRequiresUserAction"的属性。如果要将其设置为 false,可以通过 phonegap 配置访问它.xml:

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

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

更多在这里: http://community.phonegap.com/nitobi/topics/calling_focus

如果你想让键盘显示你会遇到很大的麻烦,导致焦点事件异步触发。我只是运气好地在用户输入上打开键盘,例如touchstarttouchendclick

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

JavaScript 解决方案的工作方式是这样的,当你在你引用的 HTML 元素之后加载它时,例如:

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

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

$(document).ready(function() {
   $('#myControl').focus();
});