PHPackages                             joelpurra/emulatetab - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. joelpurra/emulatetab

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

joelpurra/emulatetab
====================

A jQuery plugin to emulate tabbing between elements on a page.

0.2.12(5y ago)15979[5 issues](https://github.com/joelpurra/emulatetab/issues)BSD-3-ClauseJavaScript

Since Nov 25Pushed 4y ago2 watchersCompare

[ Source](https://github.com/joelpurra/emulatetab)[ Packagist](https://packagist.org/packages/joelpurra/emulatetab)[ Docs](https://joelpurra.github.io/emulatetab)[ RSS](/packages/joelpurra-emulatetab/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (1)Versions (12)Used By (0)

[EmulateTab](https://joelpurra.github.io/emulatetab) javascript library
=======================================================================

[](#emulatetab-javascript-library)

A jQuery plugin to emulate tabbing between elements on a page.

> ## ⚠️ This project has been archived
>
> [](#️-this-project-has-been-archived)
>
> No future updates are planned. Feel free to continue using it, but expect no support.

The tab key is very useful when it comes to navigating webpages. When working with functions that modify or reuse tabbing through elements on a page, the browser's native tabbing logic cannot be called from javascript. This plugin tries to emulate/simulate that browser logic.

Get it
------

[](#get-it)

Download the script, and include it in your HTML page after the jQuery script tag.

LinkNote[emulatetab.joelpurra.js](https://raw.github.com/joelpurra/emulatetab/gh-pages/dist/emulatetab.joelpurra.js)For development[emulatetab.joelpurra.min.js](https://raw.github.com/joelpurra/emulatetab/gh-pages/dist/emulatetab.joelpurra.min.js)For production[Github](https://joelpurra.github.io/emulatetab)`$ git clone --recursive git://github.com/joelpurra/emulatetab.git`
 Make sure to get the submodules too.[Bower](https://sindresorhus.com/bower-components/#!/search/jquery-emulatetab)`$ bower install jquery-emulatetab`[Component](https://component.io/joelpurra/emulatetab)`$ component install joelpurra/emulatetab`[NPM](https://npmjs.org/package/jquery-emulatetab)`$ npm install jquery-emulatetab`[jQuery Plugin Registry](https://plugins.jquery.com/emulatetab/)[Packagist](https://packagist.org/packages/joelpurra/emulatetab)Demos
-----

[](#demos)

- [`example/demo.html`](https://joelpurra.github.io/emulatetab/example/demo.html): Simple demo for comparing EmulateTab to your browser.

Usage
-----

[](#usage)

```
// Emulate forward tab from the currently focused element
$.emulateTab();

// Emulate reverse tab from the currently focused element
$.emulateTab(-1);

// Emulate forward tab from a specific element
$(selector).emulateTab();

// Emulate reverse tab from a specific element
$(selector).emulateTab(-1);
```

### Tabbable elements

[](#tabbable-elements)

Elements that can be focused/tabbed include ``, ``, ``, `` and `` (the `href` attribute must exist and the tag must have some contents).

Note that ``, `` (without `href` or empty contents), `disabled="disabled"` or `display: none;` elements cannot be focused/tabbed to.

Original purpose
----------------

[](#original-purpose)

Developed to as a part of two other plugins; one to [use tab to skip over less used form fields](https://github.com/joelpurra/skipontab), the other to [use the + on the keypad as a new tab key](https://github.com/joelpurra/plusastab). Both plugins were used in a web application for registering and administering letters.

Dependencies
------------

[](#dependencies)

EmulateTab's only runtime dependencies is [jQuery](https://jquery.com/).

Browser compatibility
---------------------

[](#browser-compatibility)

Should be about as compatible as jQuery is, since most functions depend on jQuery's normalization. You are engouraged to [run the EmulateTab test suite](https://joelpurra.github.io/emulatetab/test/) and then report any issues.

Contribute
----------

[](#contribute)

In order to contribute to the project, follow these steps.

- Make sure you have installed [git](https://git-scm.com/downloads), [npm](https://nodejs.org/download/), [bower](https://bower.io/#installing-bower), [grunt](https://gruntjs.com/getting-started), [jekyll](https://jekyllrb.com/docs/installation/).
- [Fork the project on github](https://github.com/joelpurra/emulatetab/fork).
- `$ git clone --recursive git@github.com:USERNAME/emulatetab.git` where `USERNAME` is your github username.
- `$ git checkout -b my-own-modification` where `my-own-modification` is a descriptive name for your fix or feature.
- `$ npm install && bower install`
- `$ grunt watch`
- Make your changes to the code. Remember to write new test cases for your changes.
- `$ git commit`
- `$ grunt` to make sure all tests pass.
- `$ git push`
- Send a pull request on [github.com](https://github.com).

Todo
----

[](#todo)

- [jQuery UI](https://jqueryui.com/) has better code for [`:focusable`](https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.core.js#L210)/[`:tabbable`](https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.core.js#L214). Investigate how to implement it.
- Investigate focusing/tabbing and [`[contenteditable]`](https://www.whatwg.org/specs/web-apps/current-work/#contenteditable).
- Investigate focusing/tabbing non-input elements with [`[tabindex]`](https://www.w3.org/TR/html4/interact/forms.html#h-17.11.1) and negative values value.
- Create a separate git repo for packaged/minified bower/composer/component/jquery plugin releases.

License
-------

[](#license)

Developed for PTS by Joel Purra

Copyright (c) 2011, 2012, 2013, 2014, 2015, The Swedish Post and Telecom Authority (PTS) All rights reserved.

Released under the BSD license.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance13

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity60

Established project with proven stability

 Bus Factor1

Top contributor holds 93.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~265 days

Recently: every ~551 days

Total

11

Last Release

1903d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b79491dcc0603e489adaab82b7487b34af2a5872e044a25bf89124f13b4a6b6e?d=identicon)[joelpurra](/maintainers/joelpurra)

---

Top Contributors

[![joelpurra](https://avatars.githubusercontent.com/u/1398544?v=4)](https://github.com/joelpurra "joelpurra (75 commits)")[![adam-lynch](https://avatars.githubusercontent.com/u/1427241?v=4)](https://github.com/adam-lynch "adam-lynch (4 commits)")[![bitdeli-chef](https://avatars.githubusercontent.com/u/3092978?v=4)](https://github.com/bitdeli-chef "bitdeli-chef (1 commits)")

---

Tags

compatibilityemulate-tabbingjavascriptjqueryjquery-pluginusabilityformfocusinputFormsshortcutstabkeyboardemulationemulatetabbingtabbabletabindex

### Embed Badge

![Health badge](/badges/joelpurra-emulatetab/health.svg)

```
[![Health](https://phpackages.com/badges/joelpurra-emulatetab/health.svg)](https://phpackages.com/packages/joelpurra-emulatetab)
```

###  Alternatives

[robinherbots/jquery.inputmask

Inputmask is a javascript library which creates an input mask. Inputmask can run against vanilla javascript, jQuery and jqlite.

6.5k276.6k4](/packages/robinherbots-jqueryinputmask)[barryvdh/laravel-form-bridge

This packages integrates Symfony Form Component in Laravel.

163354.8k1](/packages/barryvdh-laravel-form-bridge)[kartik-v/yii2-widget-rating

A Yii2 widget for the simple yet powerful bootstrap-star-rating plugin with fractional rating support (sub repo split from yii2-widgets)

444.1M8](/packages/kartik-v-yii2-widget-rating)[harvesthq/chosen

Chosen is a JavaScript plugin that makes select boxes user-friendly. It is currently available in both jQuery and Prototype flavors.

385.2M12](/packages/harvesthq-chosen)[kartik-v/yii2-widget-switchinput

A Yii2 wrapper widget for the Bootstrap Switch plugin to use checkboxes &amp; radios as toggle switchinputes (sub repo split from yii2-widgets)

384.4M13](/packages/kartik-v-yii2-widget-switchinput)[kartik-v/yii2-widget-colorinput

An enhanced Yii 2 widget encapsulating the HTML 5 color input (sub repo split from yii2-widgets)

324.8M10](/packages/kartik-v-yii2-widget-colorinput)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
