Tab по кнопке Enter
11.01.2018

Во всех браузерах поддерживается навигация между элементам страницы по клавишам Tab и Tab+Shift. Иногда возникает необходимость продублировать эту функцию клавишей Enter. Наиболее актуально это для страниц, где пользователю необходимо часто и много вводить информацию. Тогда для удобства на кнопку Enter навешивается обработчик который выполняет тоже самое что происходит по кнопке Tab.

Реализуется это с помощью JavaScript:

$(document).ready(function () {
// Тело функции для Dynamic Action
$('form').on('keydown',':input', (function (e) { 
  var vKey, vSelf, vType, vInputs, vForm, vTabIndex, vInputArray;
  vKey = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
  vSelf = $(this); 
  vType = vSelf.prop('type');
  if (vKey == 13 && vType != 'submit' && vType != 'textarea') {
    e.preventDefault();  
 
    vForm = vSelf.parents('form:eq(0)');
    // Sort by tab indexes if they exist
    vTabIndex = parseInt(vSelf.attr('tabindex'));
    if (vTabIndex) {
      vInputArray = vForm.find('[tabindex]').filter(':visible:enabled').sort(function(a, b) {
        return parseInt($(a).attr('tabindex')) - parseInt($(b).attr('tabindex'));
      });
    } else {
      vInputArray = vForm.find(':input').filter(':visible:enabled');
    }
 
    vIndex = vInputArray.index(this) + 1;
 
    if (vIndex < vInputArray.length) {
      move_to = vInputArray.eq(vIndex);
      move_to.focus();
      move_to.select();
}
    return false;
  }
}));
// конец обработчика
});

Возможно удобным будет сделать такое поведение для всех страниц приложения. Тогда на cтранице 0 необходимо создать динамическое событие PageLoad и в обработчике вставить код выше за исключением первой и последней строк.

release 1.0