在iOS 8及更高版本中,要在iOS键盘上显示“搜索”按钮,请使用表单中的action属性。来自安东的回答...... Show 'Search' button in iPhone/iPad Safari keyboard
<form action=".">
<input type="search" />
</form>
但是当您使用带有ng-submit的AngularJS表单时,这不起作用
<form action="." ng-submit="doSearch(searchtext)">
<input type="search" ng-model="searchtext" />
</form>
action属性会破坏Angular表单提交。
有关如何设置虚拟操作属性并仍然使用ng-submit处理表单处理的任何建议?或任何其他解决方案,将使用AngularJS HTML5表单显示iOS键盘的搜索键。
答案 0 :(得分:5)
刚遇到同样的问题,此处的关键是angular
仅在未指定form
时才会阻止默认action
提交,因此如果您要指定preventDefault
,则需要<form action="." ng-submit="$event.preventDefault();doSearch(searchtext)">
<input type="search" ng-model="searchtext" />
</form>
手动,这应该很容易。
这应该有效(为我工作):
blur()
另请注意,在您发出搜索请求后,您需要.directive('prettySubmit', function () {
return function (scope, element, attr) {
var textFields = $(element).children('input');
$(element).submit(function(event) {
event.preventDefault();
textFields.blur();
});
};
})
输入字段才能自动隐藏键盘。
<强>更新强>
使用后者,该指令将帮助您:
preventDefault()
我已将form
放入指令中,因此您的<form action="." ng-submit="doSearch(searchtext)" pretty-submit>
<input type="search" ng-model="searchtext" />
</form>
将如下所示:
.someclassname {
@include make-sm-column(6);
}
答案 1 :(得分:-1)
我遇到了同样的问题。 最后我决定使用
&lt; form action =“{{'#/ search /'+ searchText}}”&gt;
相反,它有效。