1.3.0 • Published 4 years ago

js-captcha v1.3.0

Weekly downloads
39
License
MIT
Repository
github
Last release
4 years ago

JavaScript Captcha

Simple captcha component (<2KB) written in pure JavaScript with no dependencies

Simple numeric captcha rendered within basic canvas element.

Demo

Demo can be seen here.

Install

npm install js-captcha --save

Usage

Just include required JavaScript:

<script src="jCaptcha.js"></script>

or

import jCaptcha from 'jCaptcha';

Define main captcha input element in HTML:

<input class="jCaptcha" type="text" placeholder="Type in result please">

Initialize it:

<script>
    var myCaptcha = new jCaptcha({
        el: '.jCaptcha',
        canvas: {
            class: 'jCaptchaCanvas',
            style: {
                // required properties for captcha stylings:
                width: 100,
                height: 15,
                textBaseline: 'top',
                font: '15px Arial',
                textAlign: 'left',
                fillStyle: '#ddd'
            }
        },
        // set callback function for success and error messages:
        callback: ( response, $captchaInputElement, numberOfTries ) => {
            if ( response == 'success' ) {
                // success handle, e.g. continue with form submit
            }
            if ( response == 'error' ) {
                // error handle, e.g. add error class to captcha input

                if (numberOfTries === 3) {
                    // maximum attempts handle, e.g. disable form
                }
            }
        }
    });
</script>

And then call validate() method when required (e.g. on form submit event):

<script>
    myCaptcha.validate();
</script>

No stylings included, just style it as you wish, see options below.

Options

jCaptcha can take an optional parameter - an Object of key/value settings:

NameRequiredTypeDefaultDescription
elfalseString'jCaptcha'CSS class for input element
requiredValuefalseString'*'Render new random numbers on error validate
resetOnErrorfalseBooleantrueMandatory field indicator
focusOnErrorfalseBooleantrueFocus input field on error validate
clearOnSubmitfalseBooleantrue'Clear input value on every validate
callbackfalseFunctionnullAs invoked function these useful arguments are returned: response (type: String, value: 'success' or 'error'), captcha (type: Element) and number of tries (type: Number)
canvasClassfalseString'jCaptchaCanvas'CSS class of canvas captcha
canvasStyletrueObject{}Canvas stylings object, required for canvas appearance
canvasStyle.widthfalseNumbernullWidth of canvas captcha element (in px)
canvasStyle.heightfalseNumbernullHeight of canvas captcha element (in px)
canvasStyle.fontfalseString''Font size and font family of canvas captcha element
canvasStyle.fillStylefalseString''Text color of canvas captcha element
canvasStyle.textAlignfalseString''Text align of canvas captcha element
canvasStyle.textBaselinefalseString''Text baseline of canvas captcha element

API

reset() - generate and render new random numbers

validate() - validate entered result in input field

Browser support

Works in every modern browser which has support for canvas element.

License

js-captcha is licensed under the MIT license.