2009-11-25 3 views
0

У меня есть большая таблица ввода данных HTML, реализованная в виде большой матрицы полей ввода. Я пытаюсь реализовать функцию на основе JavaScript, которая динамически переключается между порядком вкладок по строкам и по столбцам.Не удается установить tabIndex более одного раза в IE8

Подход, который я использую, работает только один раз в IE8. То есть, после того, как индекс табуляции был установлен с использованием JavaScript, любые последующие изменения игнорируются - и порядок табуляции возвращается к состоянию по умолчанию.

Входы таблица имеют имена классов, как так:

.row-0 .col-0 | .row-0 .col-1 | .row-0 .col-2 | ... 
--------------+---------------+---------------+---- 
.row-1 .col-0 | .row-1 .col-1 | .row-1 .col-2 | ... 

My JavaScript выглядит следующим образом:

nCols = ...; 
nRows = ...; 

function setTabOrder(byCol) { 
    var max = byCol ? nCols : nRows; 
    var selector = byCol ? '.col-' : '.row-'; 
    var tabIndex = 1; 
    for (var i = 0; i < max; i++) { 
     $(selector + i).each(function() { 
      this.tabIndex = tabIndex++; 
      //this.value = this.tabIndex; 
     }); 
    } 
} 

На самом деле, мне кажется, я могу только вкладку по столбцам, если я призываю setTabOrder(true); при загрузке страницы , то есть:

$(function() { 
    setTabOrder(true); 
}); 

Любые идеи, почему это не работает, как я ожидаю?

ответ

1

Я бы порекомендовал вам сделать это по-другому, это поместить обработчик событий для клавиш вкладок во всех элементах записи, а затем использовать событие этого ключа для поиска следующего элемента в строке или столбце, в зависимости от того, что вы хотите, а затем вызовите setFocus() на этом входе. Если хотите, вы можете сделать противоположное для shift + tab.

Это позволяет избежать проблем и на самом деле не отвечает на ваш вопрос, но также может устранить необходимость в этой схеме .col- и .row-именования, которая, вероятно, приведет к упрощению технического обслуживания.

+0

Ну, номера строк и столбцов генерируются динамически вместе с остальной частью таблицы, поэтому сохранение этого не является проблемой. Но это похоже на правильное решение, которое я рассмотрю, если не удастся добиться того, что я пытаюсь сделать. – harto