Guest User

Slick slider tabbing

a guest
Dec 20th, 2016
685
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $(document).on('keydown', '.slick-initialized *', function (e) {
  2.     var keyCode = (e.keyCode ? e.keyCode : e.which);
  3.     if (keyCode !== 9) { return; }
  4.  
  5.     var me = $(this);
  6.  
  7.     // Traverse up to the parent slide
  8.     var slide = me.parents('.slick-slide');
  9.     if (slide.length < 1) { return; }
  10.  
  11.     // Get all elements in the slick slider
  12.     var elms = slide.find('*');
  13.     if (elms.length < 1) { return; }
  14.  
  15.     // Get tabable elements
  16.     var tabable = [];
  17.     elms.each(function () {
  18.         var tabindex = $(this).attr('tabindex');
  19.         if (tabindex === -1 || typeof tabindex === 'undefined')  { return; }
  20.  
  21.         tabable.push(this);
  22.     });
  23.     if (tabable.length < 1) { return; }
  24.  
  25.     // Get the current slide index and increase/decrease it's value.
  26.     var inc = (e.shiftKey) ? -1 : 1;
  27.     var idx = slide.data('slick-index');
  28.         idx += inc;
  29.  
  30.     // Get a reference to the slick slider
  31.     var slider = me.parents('.slick-initialized');
  32.  
  33.     // Loop through each tabable element
  34.     for (var i = 0; i < tabable.length; i++) {
  35.  
  36.         // Go to next/prev slide if we're on the last/first tabable element
  37.         if (tabable[i] === e.target) {
  38.             if ((i === tabable.length - 1 && inc > 0) || (i === 0 && inc < 0)) {
  39.                 me[0].blur();
  40.                 e.stopImmediatePropagation();
  41.                 e.preventDefault();
  42.  
  43.                 slider.slick('slickGoTo', idx);
  44.             }
  45.         }
  46.     }
  47. });
Advertisement
Add Comment
Please, Sign In to add comment