1. Introducing autoNumeric?
autoNumeric is a standalone Javascript library that provides direct formatting for international numbers and currencies.
Currently the latest stable version is version 4.2. * (Master branch), if you want to try new features you can see in the next branches.
1. Highlights
- Easy to use and easy to configure
1 2 3 | <span class="token comment">// Initialization</span> <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> <span class="token string">'.myInput'</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> currencySymbol <span class="token operator">:</span> <span class="token string">'$'</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
- Highly configurable (more than 40 options available)
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token comment">// The options are...optional :)</span> <span class="token keyword">const</span> autoNumericOptionsEuro <span class="token operator">=</span> <span class="token punctuation">{</span> digitGroupSeparator <span class="token operator">:</span> <span class="token string">'.'</span> <span class="token punctuation">,</span> decimalCharacter <span class="token operator">:</span> <span class="token string">','</span> <span class="token punctuation">,</span> decimalCharacterAlternative <span class="token operator">:</span> <span class="token string">'.'</span> <span class="token punctuation">,</span> currencySymbol <span class="token operator">:</span> <span class="token string">'u202f€'</span> <span class="token punctuation">,</span> currencySymbolPlacement <span class="token operator">:</span> AutoNumeric <span class="token punctuation">.</span> options <span class="token punctuation">.</span> currencySymbolPlacement <span class="token punctuation">.</span> suffix <span class="token punctuation">,</span> roundingMethod <span class="token operator">:</span> AutoNumeric <span class="token punctuation">.</span> options <span class="token punctuation">.</span> roundingMethod <span class="token punctuation">.</span> halfUpSymmetric <span class="token punctuation">,</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token comment">// Initialization</span> <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> domElement <span class="token punctuation">,</span> autoNumericOptionsEuro <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
- Oriented user experience; Use autoNumeric moderately and naturally, especially with the string function feature
1 2 3 4 5 6 | anElement <span class="token punctuation">.</span> <span class="token function">french</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">set</span> <span class="token punctuation">(</span> <span class="token number">42</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">update</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> options <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">formSubmitJsonNumericString</span> <span class="token punctuation">(</span> callback <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">clear</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
- Supports most international currency and number formats
- Partial support for Chrome browser for mobile devices
And also:
- All different formats can be used on the same page at the same time.
- Each input can be configured by setting options as an HTML5 data property or passing it directly as an argument in the Javascript code.
- The setting can be easily changed at any time using the
update
method or viacallback
- autoNumeric supports
input
as well as most text elements with content changeable properties, allowing you to place formatted numbers and currencies on any part of your page. - AutoNumeric elements can be chained allowing you to perform an action on multiple elements at the same time.
- 8 predefined currency options as well as 33 popular options that let you use AutoNumeric directly by skipping option configuration step
- The 26 built-in methods give you the flexibility you need to use AutoNumeric to its full potential
- 22 global methods allow to control sets of elements managed by Automatic Numbers at the same time
- 21 additional dedicated methods for managing form submission and management
- Formula mode allows to quickly enter and evaluate mathematical expressions inside an element
- 17 static functions are provided by the AutoNumeric class
- And over 40 options allow you to customize your currency’s format and behavior exactly
2. Installation
You can install AutoNumeric with your preferred dependency manager:
1 2 3 4 5 | # <span class="token keyword">with</span> <span class="token template-string"><span class="token template-punctuation string">`</span> <span class="token string">yarn</span> <span class="token template-punctuation string">`</span></span> <span class="token operator">:</span> yarn add autonumeric # or <span class="token keyword">with</span> <span class="token template-string"><span class="token template-punctuation string">`</span> <span class="token string">npm</span> <span class="token template-punctuation string">`</span></span> <span class="token operator">:</span> npm install autonumeric <span class="token operator">--</span> save |
3. Usage
3.1 On the browser
Just include autoNumeric
in the <header> tag of the html page. No need to depend on other files or libraries.
1 2 3 4 5 6 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> autoNumeric.min.js <span class="token punctuation">"</span></span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> text/javascript <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token comment"><!-- ...or, you may also directly use a CDN :--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> https://cdn.jsdelivr.net/npm/ <a class="__cf_email__" href="/cdn-cgi/l/email-protection">[email protected]</a> <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token comment"><!-- ...or --></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> https://unpkg.com/autonumeric <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> |
3.2 In another script
If you want to use AutoNumeric in your code, you can import the src / AutoNumeric.js file as an ES6 module using:
1 2 | <span class="token keyword">import</span> AutoNumeric <span class="token keyword">from</span> <span class="token string">'autonumeric'</span> <span class="token punctuation">;</span> |
You can then initialize AutoNumeric with or without an option
1 2 3 4 5 6 7 8 9 | <span class="token comment">// autoNumeric with the defaults options</span> anElement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> domElement <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// autoNumeric with specific options being passed</span> anElement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> domElement <span class="token punctuation">,</span> <span class="token punctuation">{</span> options <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// autoNumeric with a css selector and a pre-defined language options</span> anElement <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> <span class="token string">'.myCssClass > input'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">french</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
3.3 In Web Workers
1 2 | <span class="token keyword">import</span> AutoNumeric <span class="token keyword">from</span> <span class="token string">'../node_modules/autonumeric/src/main'</span> <span class="token punctuation">;</span> |
4. Is autoNumeric element based?
- with event handlers when used on
<input>
elements or on content-aiding elements that could make them reactive (in read / write mode) or - There is no event handler when used on DOM elements that don’t have the contenteditable property set to true, which essentially acts as a one-time format read-only and forget mode.
5. In the <input>
element
When used on the <input>
element, you’ll be able to interact with its value and get the input formatted the way you type, using all autoNumeric
‘s functionality.
Please note that due to browser restrictions, only the following <input>
types are supported:
text
,tel
,hidden
, or- No categories are specified
1 2 3 4 5 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> input</span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">'</span> text <span class="token punctuation">'</span></span> <span class="token attr-name">value</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 1234.56 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> input</span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">'</span> tel <span class="token punctuation">'</span></span> <span class="token attr-name">value</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 1234.56 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> input</span> <span class="token attr-name">type</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">'</span> hidden <span class="token punctuation">'</span></span> <span class="token attr-name">value</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 1234.56 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> input</span> <span class="token attr-name">value</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> 1234.56 <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> |
Note: Number types are simply not supported because AutoNumeric
formats numbers as strings (ie. ‘123.456.789.00 & # 8364;’) which this input does not allow.
5. Change content on elements applied
Any of the following Allowed List elements that support a content autoNumeric
can be initialized using autoNumeric
. This means that anywhere on a page, on any DOM
element, you can harness the power of autoNumeric
will allow you to mask user input.
Give the following html code …:
1 2 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> p</span> <span class="token attr-name">id</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> editableDom <span class="token punctuation">"</span></span> <span class="token attr-name">contenteditable</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> true <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> 12345678.9012 <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> p</span> <span class="token punctuation">></span></span> |
you can initialize the element
this is in autoNumeric:
1 2 | <span class="token keyword">new</span> <span class="token class-name">AutoNumeric</span> <span class="token punctuation">(</span> <span class="token string">'#editableDom'</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">french</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
… and it should behave exactly like an <input>
element controlled by autoNumeric.
On other DOM elements
You can use AutoNumeric
to format the DOM
element value on load. This means it will not react to any user interaction.
The following factors are accepted:
1 2 3 4 5 6 | <span class="token keyword">const</span> allowedTagList <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token string">'b'</span> <span class="token punctuation">,</span> <span class="token string">'caption'</span> <span class="token punctuation">,</span> <span class="token string">'cite'</span> <span class="token punctuation">,</span> <span class="token string">'code'</span> <span class="token punctuation">,</span> <span class="token string">'const'</span> <span class="token punctuation">,</span> <span class="token string">'dd'</span> <span class="token punctuation">,</span> <span class="token string">'del'</span> <span class="token punctuation">,</span> <span class="token string">'div'</span> <span class="token punctuation">,</span> <span class="token string">'dfn'</span> <span class="token punctuation">,</span> <span class="token string">'dt'</span> <span class="token punctuation">,</span> <span class="token string">'em'</span> <span class="token punctuation">,</span> <span class="token string">'h1'</span> <span class="token punctuation">,</span> <span class="token string">'h2'</span> <span class="token punctuation">,</span> <span class="token string">'h3'</span> <span class="token punctuation">,</span> <span class="token string">'h4'</span> <span class="token punctuation">,</span> <span class="token string">'h5'</span> <span class="token punctuation">,</span> <span class="token string">'h6'</span> <span class="token punctuation">,</span> <span class="token string">'ins'</span> <span class="token punctuation">,</span> <span class="token string">'kdb'</span> <span class="token punctuation">,</span> <span class="token string">'label'</span> <span class="token punctuation">,</span> <span class="token string">'li'</span> <span class="token punctuation">,</span> <span class="token string">'option'</span> <span class="token punctuation">,</span> <span class="token string">'output'</span> <span class="token punctuation">,</span> <span class="token string">'p'</span> <span class="token punctuation">,</span> <span class="token string">'q'</span> <span class="token punctuation">,</span> <span class="token string">'s'</span> <span class="token punctuation">,</span> <span class="token string">'sample'</span> <span class="token punctuation">,</span> <span class="token string">'span'</span> <span class="token punctuation">,</span> <span class="token string">'strong'</span> <span class="token punctuation">,</span> <span class="token string">'td'</span> <span class="token punctuation">,</span> <span class="token string">'th'</span> <span class="token punctuation">,</span> <span class="token string">'u'</span> <span class="token punctuation">]</span> |
This tip:
- Since the number type is not supported, if you want to display the numeric keypad when selecting an element managed with AutoNumber in the mobile browser, you can use the input phone number type.
- In the future, you will be able to add the Html property inputmode = “numeric” to achieve the same effect.
And the optional options I will write more in the next post.