使用AngularJS app中的html输入type = search在iOS键盘上显示搜索按钮

时间:2015-10-21 01:16:57

标签: ios angularjs safari keyboard

在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键盘的搜索键。

2 个答案:

答案 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;

相反,它有效。