【发布时间】:2016-05-22 19:14:24
【问题描述】:
我正在使用 AngularJS 开发 Ionic 应用程序。
我的输入很少(登录/注册),当按下 Enter 键时 - android 上的 go 按钮和 iOS 上的等效按钮 - KeyCode 13,它会在自定义指令的帮助下专注于下一个输入。
它在网络浏览器上运行良好,但在手机上,它会聚焦下一个输入,然后焦点会立即丢失,键盘会自行隐藏,迫使用户再次点击输入。
这里是 HTML:
<ion-view title="First Screen" hide-nav-bar="true" id="firstScreen" class=" ">
<ion-content padding="false" style="background: url(img/XAYpMMdUTvWFVAnrEhUi_restaurant.jpg) no-repeat center;background-size:cover;" class=" manual-remove-top-padding" scroll="false">
<div class="">
<img src="img/awdYDbeeSlSHCToXN5Lw_logo.png" width="auto" height="30%" style="display: block; margin-left: auto; margin-right: auto;">
</div>
<label class="item item-input " id="emailInput" name="email">
<input class="invisible-input" type="email" placeholder="Email" ng-model="user.email" focus-me="currentInput == 0" ng-keyup="inputKeyEvent($event, 0)">
</label>
<label class="item item-input " id="passwordInput" name="password">
<input class="invisible-input" type="password" placeholder="Mot de passe" focus-me="currentInput == 1" ng-model="user.password" ng-keyup="inputKeyEvent($event, 1)">
</label>
<label ng-show="isSignUp" class="item item-input " ng-class="{'animated fadeInLeft': isSignUp, 'animated fadeOutLeft' : !isSignUp && changed }" id="confirmPasswordInput" name="password">
<input class="invisible-input" type="password" placeholder="Confirmation du mot de passe" focus-me="currentInput == 2" ng-model="user.confirmation" ng-keyup="inputKeyEvent($event, 2)">
</label>
<div>
{{response}}
</div>
<div class="actionButtonContainer">
<button ng-click="signin()" id="loginButton" class=" button button-balanced button-full">Se oonnecter</button>
<button ng-click="signup()" id="signupButton" class=" button button-energized button-full" ng-disabled="disableSignUp()">S'inscrire</button>
</div>
</ion-content>
这是指令:
directive('focusMe', function() {
return {
link: function (scope, element, attrs) {
scope.$watch(attrs.focusMe, function (value) {
if (value === true) {
element[0].focus();
}
});
}
};
这里是涉及的控制器方法:
$scope.inputKeyEvent = function(event, inputId)
{
$scope.response = event.keyCode;
if (event.keyCode == 13)
{
$scope.currentInput = inputId + 1;
if ($scope.currentInput == 2 && !$scope.isSignUp)
$scope.signin();
else if ($scope.currentInput == 3 && $scope.isSignUp)
$scope.signup();
}
}
感谢您的帮助!
编辑
问题出在我的 genymotion 模拟器上,它确实可以在真机上完美运行(至少是我的)。
【问题讨论】:
-
抱歉跑题了,但为了以后参考,动词是“输”:grammarist.com/usage/loose-lose
标签: javascript android angularjs ionic-framework