Skip to content

πŸ“Ÿ Accessible character counter for input elements

License

Notifications You must be signed in to change notification settings

rikschennink/short-and-sweet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b09e06c Β· May 23, 2022

History

19 Commits
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021
May 25, 2018
May 25, 2018
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021
May 23, 2022
May 23, 2022
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021
Aug 4, 2021

Repository files navigation

Short and Sweet, Accessible Character Counter

License: MIT npm version

Tested with VoiceOver (Safari 11) & NVDA (FF 60)

  • Tells user the amount of space left when the field is focussed
  • Updates the user periodically while typing

Play around with the demo:

https://codepen.io/rikschennink/pen/LmoJYY

View a video of Short and Sweet with VoiceOver:

http://www.youtube.com/watch?v=3NDCEvHHaCY (sound is off)


Buy me a Coffee / Dev updates on Twitter


Features

  • No dependencies
  • Easy setup
  • Accessible

Installation

Install from npm:

npm install short-and-sweet --save

Or download dist/short-and-sweet.min.js and include the script on your page like shown below.

Usage

Run short-and-sweet like shown below and pass an element reference or a querySelector. For best performance include the script just before the closing </body> element.

<textarea maxlength="200"></textarea>

<script src="short-and-sweet.min.js"></script>
<script>
    shortAndSweet('textarea', {
        counterClassName: 'my-short-and-sweet-counter',
    });
</script>

The following options are available to pass to the shortAndSweet method.

Option Default Description
counterClassName 'short-and-sweet-counter' The classname of the counter element
counterLabel '{remaining} characters left' The text shown in the counter element, placeholders available are {remaining}, {maxlength}, {length}
assistDelay 2000 The time in milliseconds the assist waits before updating the user with the screenreader user with the current count
append (el, counter) => { el.parentNode.appendChild(counter); } The method used to append the element to the DOM

Tested

  • Modern browsers
  • VoiceOver + Safari
  • NVDA + Firefox
  • IE 10+

Versioning

Versioning follows Semver.

License

MIT