{"id":32230287,"url":"https://github.com/joelpurra/skipontab","last_synced_at":"2025-10-22T11:03:01.581Z","repository":{"id":2426665,"uuid":"3395727","full_name":"joelpurra/skipontab","owner":"joelpurra","description":"A jQuery plugin to exempt selected form fields from the forward tab order.","archived":true,"fork":false,"pushed_at":"2021-06-01T11:50:26.000Z","size":169,"stargazers_count":11,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-12T16:08:24.991Z","etag":null,"topics":["efficiency","html","html-forms","javascript","jquery","jquery-plugin","skipped-fields","speedup","tabindex","user-experience","ux"],"latest_commit_sha":null,"homepage":"https://joelpurra.com/projects/skipontab/docs/example/skip-some-fields-in-order-form.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joelpurra.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-02-09T09:15:44.000Z","updated_at":"2023-08-29T05:49:37.000Z","dependencies_parsed_at":"2022-08-25T16:01:20.657Z","dependency_job_id":null,"html_url":"https://github.com/joelpurra/skipontab","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/joelpurra/skipontab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelpurra%2Fskipontab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelpurra%2Fskipontab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelpurra%2Fskipontab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelpurra%2Fskipontab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joelpurra","download_url":"https://codeload.github.com/joelpurra/skipontab/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joelpurra%2Fskipontab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280424216,"owners_count":26328462,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-22T02:00:06.515Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["efficiency","html","html-forms","javascript","jquery","jquery-plugin","skipped-fields","speedup","tabindex","user-experience","ux"],"created_at":"2025-10-22T11:01:12.850Z","updated_at":"2025-10-22T11:03:01.572Z","avatar_url":"https://github.com/joelpurra.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# [SkipOnTab](https://joelpurra.com/projects/skipontab/) javascript library\n\n\u003cp class=\"donate\"\u003e\n  \u003ca href=\"https://joelpurra.com/donate/proceed/?amount=5\u0026currency=usd\"\u003e\u003ckbd\u003eDonate $5 now\u003c/kbd\u003e\u003c/a\u003e\n  \u003ca href=\"https://joelpurra.com/donate/proceed/?amount=25\u0026currency=usd\"\u003e\u003ckbd\u003eDonate $25 now\u003c/kbd\u003e\u003c/a\u003e\n  \u003ca href=\"https://joelpurra.com/donate/proceed/?amount=100\u0026currency=usd\u0026invoice=true\"\u003e\u003ckbd\u003eDonate $100 now\u003c/kbd\u003e\u003c/a\u003e\n  \u003ca href=\"https://joelpurra.com/donate/\"\u003e\u003ckbd\u003eMore options\u003c/kbd\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n- A [jQuery](https://jquery.com/) plugin to\n  - exempt selected fields from the forward tab order.\n  - include excluded fields in the reverse tab order.\n\n\n\n\u003e ## ⚠️ This project has been archived\n\u003e\n\u003e No future updates are planned. Feel free to continue using it, but expect no support.\n\n\n\n- [Project page](https://joelpurra.com/projects/skipontab/)\n- [Source code on Github](https://github.com/joelpurra/skipontab)\n- [Basic demo](https://joelpurra.com/projects/skipontab/docs/example/demo.html)\n- [Order form demo](https://joelpurra.com/projects/skipontab/docs/example/skip-some-fields-in-order-form.html)\n- [Test suite](https://joelpurra.com/projects/skipontab/docs/test/)\n\nWhen using \u003ckbd\u003etab\u003c/kbd\u003e to navigate through a form, skipping some fields will reduce key presses for the normal use cases. Skipped fields can still be navigated to by keyboard; once skipped and focusing the next form field, use \u003ckbd\u003eshift\u003c/kbd\u003e-\u003ckbd\u003etab\u003c/kbd\u003e to step back. Mouse or touch navigation is unaffected.\n\nThis library is most useful when the users are familiar with the form, and uses it regularly. Casual users may not feel as comfortable - then again, if they are already using the \u003ckbd\u003etab\u003c/kbd\u003e button, they might see it as an optimization.\n\n\n\n## Get it\n\n- Directly: [`src/skipontab.joelpurra.js`](src/skipontab.joelpurra.js)\n- [Bower](https://bower.io/):\n\n```\nbower install jquery-skipontab\n```\n\n\n\n## Demos\n\n- [`example/demo.html`](https://joelpurra.com/projects/skipontab/docs/example/demo.html): Simple demo for playing around.\n- [`example/skip-some-fields-in-order-form.html`](https://joelpurra.com/projects/skipontab/docs/example/skip-some-fields-in-order-form.html): Expanded demo with some thoughts on what fields to skip.\n\n## Usage\n\n### HTML\n\n```html\n\u003c!-- Can be applied to skippable elements one by one --\u003e\n\u003cinput type=\"text\" data-skip-on-tab=\"true\" /\u003e\n\u003ctextarea data-skip-on-tab=\"true\"\u003e\u003c/textarea\u003e\n\u003ca href=\"https://joelpurra.com/\" data-skip-on-tab=\"true\"\u003eJoel Purra\u003c/a\u003e\n\n\u003cinput type=\"button\" value=\"This button is not skipped\" /\u003e\n\n\u003c!-- Can be applied using a class name --\u003e\n\u003cinput type=\"text\" value=\"\" class=\"skip-on-tab\" /\u003e\n\n\u003c!-- Can be applied to all skippable elements within a container --\u003e\n\u003col data-skip-on-tab=\"true\"\u003e\n\t\u003cli\u003e\u003cinput type=\"checkbox\" /\u003e Checkbox\u003c/li\u003e\n\t\u003cli\u003e\u003cinput type=\"checkbox\" /\u003e Another checkbox\u003c/li\u003e\n\n\t\u003c!-- Can be explicitly exluded from skipping --\u003e\n\t\u003cli\u003e\u003cinput type=\"checkbox\" data-skip-on-tab=\"false\" /\u003e Important checkbox\u003c/li\u003e\n\t\u003cli\u003e\u003cinput type=\"checkbox\" class=\"disable-skip-on-tab\" /\u003e Another important checkbox\u003c/li\u003e\n\u003c/ol\u003e\n```\n\n\n\n### Javascript\n\n```javascript\n// Apply skip on tab to the selected elements/containers\n$(selector).skipOnTab();\n\n// Exclude skip on tab to the selected elements/containers\n$(selector).skipOnTab(false);\n\n// Equivalent static function\nJoelPurra.SkipOnTab.skipOnTab($(selector));\nJoelPurra.SkipOnTab.skipOnTab($(selector), false);\n```\n\n\n\n### Skippable elements\n\nElements that can be focused/tabbed include `\u003cinput\u003e`, `\u003cselect\u003e`, `\u003ctextarea\u003e`, `\u003cbutton\u003e` and `\u003ca href=\"...\"\u003e` (the `href` attribute must exist and the tag must have some contents). These are also the elements that can be skipped.\n\nNote that `\u003cinput type=\"hidden\" /\u003e`, `\u003ca\u003e` (without `href` or empty contents), `disabled=\"disabled\"` or `display: none;` elements cannot be focused.\n\n\n\n### Static elements\n\nStatic skippable html elements can have, or be contained within elements that have, the attribute `data-skip-on-tab=\"true\"` or the class `.skip-on-tab`. They are enabled automatically when the library has been loaded/executed.\n\n\n\n### Dynamic elements\n\nDynamic elements are initialized to SkipOnTab in code after adding them to the DOM; `$(\"#my-optional-input\").skipOnTab()`. This is not necessary if the added element already is contained within an element that is marked for skipping. You can also call `.skipOnTab()` on containers.\n\n\n\n### Containers\n\nWhen SkipOnTab is applied to html containers, like `\u003cdiv\u003e`, `\u003cul\u003e` or `\u003cfieldset\u003e`, all skippable child elements are implicitly skipped. This applies to static html and subsequently added child elements.\n\n\n\n### Disabling skipping\n\nSkippable elements, or containers with skippable children, marked with class `.disable-skip-on-tab` or attribute `data-skip-on-tab=\"false\"` are never skipped. Disabling can also be done dynamically on elements/containers with `$(selector).skipOnTab(false)`. If skipping is disabled for the element when it receives focus, or any of its elements parents, it will not be skipped. Disabling skipping takes precedence over enabling skipping.\n\n\n\n## Original purpose\n\nDeveloped to skip less used form fields in a web application for registering and administering letters. Examples of skipped fields are dropdowns with sensible defaults, the second address line fields in address forms and buttons for seldom used actions.\n\n\n\n## [SkipOnTab versus tabindex](https://github.com/joelpurra/skipontab/wiki/SkipOnTab-versus-tabindex)\n\nSkipOnTab does *not* rely on setting [`tabindex`](https://www.w3.org/TR/html4/interact/forms.html#h-17.11.1) on elements - it uses javascript events instead. Read more on the wiki page [SkipOnTab versus tabindex](https://github.com/joelpurra/skipontab/wiki/SkipOnTab-versus-tabindex).\n\n\n\n## Dependencies\n\nSkipOnTab's runtime dependencies are\n\n- [jQuery](https://jquery.com/)\n- [EmulateTab](https://github.com/joelpurra/emulatetab), one of SkipOnTab's sister projects.\n\n\n\n## Browser compatibility\n\nShould be about as compatible as jQuery is, since most functions depend on jQuery's normalization. You are engouraged to [run the SkipOnTab test suite](https://joelpurra.com/projects/skipontab/docs/test/) and then report any issues.\n\n\n\n## Todo\n\n- Break out reusable key press functions from tests.\n- Investigate how usable `data-skip-on-tab=\"#id-of-next-element-in-the-order\"` would be.\n\n\n\n## See also\n\nPlusAsTab's sister projects.\n\n- [PlusAsTab](https://github.com/joelpurra/plusastab) - use the \u003ckbd\u003e+\u003c/kbd\u003e key on the *keypad* as a \u003ckbd\u003etab\u003c/kbd\u003e key equivalent for faster numeric input.\n- [EmulateTab](https://github.com/joelpurra/emulatetab) - the tab emulator used by both SkipOnTab and PlusAsTab.\n\n\n\n---\n\n\n\n[SkipOnTab](https://joelpurra.com/projects/skipontab/) copyright \u0026copy; 2011, 2012, 2013, 2014, 2015, 2016, 2017, The Swedish Post and Telecom Authority (PTS). All rights reserved. Released under the BSD license. Developed for PTS by [Joel Purra](https://joelpurra.com/). [Your donations are appreciated!](https://joelpurra.com/donate/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoelpurra%2Fskipontab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoelpurra%2Fskipontab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoelpurra%2Fskipontab/lists"}