我正在使用ngGrid来显示一些数据。我的一些字段使用单元格模板来显示输入字段,而其他字段则不使用任何单元格模板。
ngGrid为单元格添加tabindex
属性。我已经使用jQuery(仅在我的浏览器控制台中进行测试)从所有单元格中删除了这个属性,这些属性不是输入字段,以便允许用户只选择行中的输入字段以及尝试设置值-1
的属性。这似乎没有得到尊重,因为当我在字段中进行选项卡时,焦点仍然会转到标签列。
我的ngGrid的选项如下:
$scope.model.gridOptions = {
enableCellSelection: true,
multiSelect: false,
data: 'model.tests',
columnDefs: [
{ field: 'field1', displayName: 'Field 1', width: '75px' },
{ field: 'field2', displayName: 'Field 2', width: '150px', cellTemplate: '<input ng-required="true" min=0 type="number" ng-model="COL_FIELD" ng-input="COL_FIELD">' },//A
{ field: 'field3', displayName: 'Field 3', width: '75px' },
//More fields, a mix of input fields and labels
};
修改: 如果我通过用户操作(例如按钮)删除tabindex,我会得到我期望的行为)(即无法聚焦该字段),但是另一个问题出现在选项卡按钮不允许您通过第一个非可聚焦元素。
我创建了一个plunkr
来证明这个issue。
所以,现在的问题是:
是否有人知道如何禁用非输入字段以使其无法聚焦,并且仍然允许用户通过非焦点元素进行制表?
更新:
在仔细观察ngGrid代码之后,网格似乎捕获了tab
个keydown事件,并尝试了一些特殊处理。我尝试了一些不同的东西,设法得到了我想要的一些行为,但最终打破了Shift + Tab
行为
答案 0 :(得分:0)
您可以使用以下属性,并使用2.0.14 ng-grid版本注释删除选项卡索引。 Tabbing将按预期工作 tabIndex:0, noTabInterference:true