当用户单击其键盘的" 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/