非jquery,回车后的角度模糊()或focus()或软键盘"go"



当用户单击其键盘的" go"并提交搜索表格时,我要解决的主要问题是关闭软键盘(请参见下文)。如果用户单击表单的提交按钮,则没有问题,因为文本字段不再焦点并且键盘关闭。

我已经挖出了stackoverflow以获取答案。我看到的答案涉及创建指令,控制器和工厂来解决此问题。或说"等到1.1"或Angular内置焦点()和Blur()指令(不能解决我的问题)时。

我当前在表单提交中触发的控制器方法中使用jQuery选择器(请参见下文)。简单,但是我使用它感到"肮脏",并且想要一种不涉及30行代码的更好方法,这比使用jQuery选择器更丑陋。

ng焦点手柄将行为附加到重点事件。我正在尝试blur()远离文本框或将焦点设置在某个地方。

<form class="navbar-form navbar-left ng-valid ng-dirty">
  <div class="input-group">
    <span class="input-group-btn">
      <button type="submit" data-ng-click="triggerBigO()" class="btn btn-default btn-primary">Invoke Orgasm</button>
    </span>
    <input type="text" placeholder="Search" data-ng-model="search.search_term" class="form-control ng-valid ng-dirty">
  </div>
</form>
<div id="somewhereElse" grass="greener"></div>

我的丑陋解决方案:

PleasureApp.controller("FunTimes", function($scope) {
  $scope.triggerBigO = function() {
    ... do unsavory stuff ...
    $("input").blur();
  }
}

我认为Angularish方法是创建这样的指令并将其附加到表单上:

app.directive('blurOnSubmit', function() {
    return function(scope, form) {
        form.submit(function() {
            form.find(":focus").blur();
        });
    }
});

和html

<form ... blur-on-submit> ... </form>

它看起来可能有点过分渗透,但现在很容易将其重用其他形式。

这是JSFiddle,您可以尝试-http://jsfiddle.net/graal/qtwgp/1/

最新更新