document.getElementById(' myControl')。focus()无法在PhoneGap中运行

时间:2012-08-07 09:40:13

标签: javascript html cordova

我正在创建一个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>

页面加载功能

。但它对我不起作用。有人可以帮帮我吗?

3 个答案:

答案 0 :(得分:15)

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

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

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

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

答案 1 :(得分:1)

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

当您在引用的HTML元素之后加载JavaScript解决方案时,JavaScript解决方案就像这样工作,例如:

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

使用jQuery看起来像这样,你可以将它加载到页面的任何地方:

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

答案 2 :(得分:1)

如果您希望键盘显示您将遇到大麻烦导致焦点事件被触发异步。我很幸运能够通过用户输入获取键盘,例如touchstarttouchend&amp; click