【发布时间】:2014-05-21 19:53:18
【问题描述】:
我有一个表单,我只使用 TAB 导航。 Tab 键顺序应该是输入 > 选择 > 按钮,但由于 SUBMIT 上的 ng-disable,在某些浏览器上,选择中的 TAB 会将您踢到其他地方。
HTML
<div ng-app="myApp">
<div ng-controller="FirstCtrl">
<form name="myForm" ng-submit="submit()" novalidate>
First Name: <input type="text" ng-model="Data.FirstName" required><br>
Last Name: <select ng-model="Data.LastName" required>
<option value="Bigglesworth">Bigglesworth</option>
<option value="Burgermeister">Burgermeister</option>
</select><br>
<input type="submit" value="Submit" ng-disabled="myForm.$invalid" />
</form>
</div>
</div>
JS
var myApp = angular.module('myApp', []);
myApp.factory('Data', function(){
return {
FirstName: '',
LastName: ''
};
});
myApp.controller('FirstCtrl', function( $scope, Data ){
$scope.Data = Data;
$scope.submit = function() {
console.log('you just submitted, foolio');
}
});
在 Mac FF 上,最后一个选项卡会在启用提交按钮之前将您踢到地址栏。 Mac Chrome 按您的预期工作,专注于最终选项卡后的提交按钮。我知道 Windows 很笨拙,但没有确切的规格要发布。
想法?我怎样才能以万无一失的方式做到这一点?
编辑 我选择了@David B. 的答案,因为它是最好的 Angular 解决方案。我最终在提交按钮之后使用了一个有点隐藏的元素,因此焦点将保持在同一个一般区域。蹩脚和老套,我知道,但在紧迫的期限内它奏效了。
<h3><button class="fakebtn_hack">Confirmation</button></h3>
<style>.fakebtn_hack {background:none; border:none; color: #FF6319; cursor: default; font-size: 1em; padding: 0;}</style>
【问题讨论】:
标签: forms angularjs user-experience