【问题标题】:Focusing on a field rendered via jQuery Mobile 'enhanceWithin()'专注于通过 jQuery Mobile 'enhanceWithin()' 呈现的字段
【发布时间】:2018-01-22 14:16:20
【问题描述】:

我今天遇到了一个有点烦人的问题,同时试图关注一个已经构建然后增强的输入字段(表单容器“$selectedActionsContainer”被传递给“.enahnceWithin();”)。

不起作用:

$selectedActionsContainer.enhanceWithin();
$userInputNewBoxes.focus();

作品:

$selectedActionsContainer.enhanceWithin();
setTimeout(function(){
    $userInputNewBoxes.focus();
}, 50);

我查看了 jQuery Mobile 文档,并四处寻找遇到类似问题但找不到任何东西的人(很可能我错过了解释)。

有谁知道是什么原因造成的,是否有比“setTimeout()”更好的解决方案(必须有一个......)?

【问题讨论】:

    标签: javascript jquery jquery-mobile


    【解决方案1】:

    .enhanceWithin() 方法作用于所有新插入的元素,所以我不会依赖或做任何假设,关于容器内的内容,以及初始化所有新小部件需要多长时间实例。当然,浏览器需要一些时间来重排和附加新事件。

    如果您需要替代解决方案,Ypu 可以捕获 JQM textinputcreate 事件。这是一个例子:

    function enhance() {
      var html = '';
      html += '<div class="ui-field-contain" data-mini="true">';
      html += '<label for="basic">Text Input:</label><input type="text" name="name" id="basic" value="">';
      html += '</div>';
      html += '<div class="ui-field-contain" data-mini="true">';
      html += '<label for="search-1">Search Input:</label><input name="search-1" id="search-1" value="" type="search">';
      html += '</div>';
      html += '<div class="ui-field-contain" data-mini="true">';
      html += '<label for="textarea-1">Textarea:</label><textarea cols="40" rows="8" name="textarea-1" id="textarea-1">Textarea</textarea>';
      html += '</div>';
      $(document).one("textinputcreate", "#basic", function(e) {
        this.focus();
      });
      $("#container").empty().append(html).enhanceWithin();
    }
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.css">
      <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
      <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.js"></script>
    </head>
    <body>
      <div id="page-1" data-role="page">
        <div role="main" class="ui-content">
          <a href="#" class="ui-btn ui-corner-all ui-mini" onclick="enhance(); return false">Enhance & Focus</a>
          <div id="container"></div>
        </div>
      </div>
    </body>
    </html>

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-20
      相关资源
      最近更新 更多