WIP
npm install z-cleave-zencleave-zencleave-zen no longer binds to DOM input elements. It now functions as a
sh
npm install --save cleave-zen
`
You can use it on unpkg.com as a CDN version
Usage
$3
You have two text fields to display credit card number and type
`html
`
Now in your JavaScript
`js
import { formatCreditCard, getCreditCardType } from 'cleave-zen'
const creditcardInput = document.querySelector('.creditcard-input')
const creditCardType = document.querySelector('.creditcard-type')
creditcardInput.addEventListener('input', e => {
const value = e.target.value
creditcardInput.value = formatCreditCard(value)
creditCardType.innerHTML = getCreditCardType(value)
})
`
$3
`js
import React, { useRef, useState } from 'react'
import { formatCreditCard, getCreditCardType } from 'cleave-zen'
const App = () => {
const inputRef = useRef(null)
const [value, setValue] = useState('')
const [type, setType] = useState('')
return (
<>
ref={inputRef}
value={value}
onChange={e => {
const value = e.target.value
setValue(formatCreditCard(value))
setType(getCreditCardType(value))
}}
/>
value: {value}
type: {type}
>
)
}
`
$3
This lib is written by TypeScript, so if you prefer to use it that way:
`js
import { formatCreditCard, type FormatCreditCardOptions } from 'cleave-zen'
const options: FormatCreditCardOptions = { delimiter: '-' }
const value: string = formatCreditCard('5163000011112222', options)
`
$3
When you manually updating the input field with formatted value, the cursor
moves to the end of the field, which can be super annoying when you typing or
deleting letters inside the string content.
This library can fix this issue for you! Simply add registerCursorTracker for
the input field:
`js
import { registerCursorTracker, DefaultCreditCardDelimiter } from 'cleave-zen'
registerCursorTracker({ input: creditCardInput, delimiter: DefaultCreditCardDelimiter }})
`
And for ReactJS usage above:
`js
import { useRef, useEffect } from 'react'
...
const inputRef = useRef(null)
useEffect(() => {
// registerCursorTracker itself returns an unregister destructor
// function so you can place it here for hook component unmount
return registerCursorTracker({ input: inputRef.current, delimiter: DefaultCreditCardDelimiter })
}, [])
...
``