input-masking
v1.0.4
Published
Styleable, Accessble Input Masking
Downloads
8
Readme
Input Masking
Introduction
This is a fork of Estelle Wyel's input-masking
adapted specifically for use in React projects.
Where possible, I maintained the spirit of the original project - particularly the intent to have styleable, accessible input forms.
Features
input-mask
enables you to include a mask on any input where a specific data entry format is required. The placeholder text remains in place, displaying which characters still need to be included. The placeholder is CSS styleable.
The user can enter letters and numbers. All other characters, like spaces, dashes, and parenthesis are automatically added by the script, making data entery easier when using dynamic keypads.
Example
http://estelle.github.io/input-masking
Quick Start
Install input-masking
in your project:
npm i input-masking
To use:
import { MaskedInput } from "input-masking";
<MaskedInput
id="expiration"
type="tel"
placeholder="MM/YY"
pattern="(1[0-2]|0[1-9])\/(1[5-9]|2\d)"
data-valid-example="05/18"
label="Credit Card Expiration"
/>;
Accessibility
There are accessibility features baked into the examples that you must maintain to maintain accessibility.
- Always include a label for each form control, and associate the form control either implicitly by nesting it, or explicitly with the
htmlFfor
andid
attributes. - Always include a
title
attribute that describes the expected pattern when including thepattern
attribute. - Always use the best input
type
for the job, so dynamic touchpad users get the right touchpad for the job. Generally this will always betype="tel"
, as most masking is for digits only. However, when alphanumeric characters are required, usetype="text"
. And, while I've included an expiration month to show an example of using complex regular expressions, usetype="month"
instead of this script.
Customization
Initalization
If you are ok with all the default options you can have masked-inputs initalize it self and avoid writing any JavaScript at all. Simplu add the attribute data-autoinit="false"
to your script tag
<script src="path/js/masking-input.js" data-autoinit="true"></script>
ReactJS version
var React = require('react'), MaskedInput = require('../index'); window.onload =
function () { React.render(
<ul>
<li>
<label htmlFor="month">Month</label>
<MaskedInput
id="month"
type="tel"
placeholder="MM/YY"
pattern="(1[0-2]|0[1-9])\/\d\d"
data-valid-example="11/18"
title="2-digit month and 2-digit year greater than 01/15"
/>
</li>
<li>
<label htmlFor="zip">Zip Code</label>
<MaskedInput
id="zip"
type="tel"
placeholder="XXXXX"
pattern="\d{5}"
required
title="5-digit zip code"
/>
</li>
</ul>
, document.getElementById('component') ); };
Contributors
License
This code is available under the MIT license
Thanks
Thanks to @stevefaulkner