Giter VIP home page Giter VIP logo

hichemtab-tech / otp-designer-jquery Goto Github PK

View Code? Open in Web Editor NEW
8.0 1.0 2.0 174 KB

OTP-designer-jquery: Create custom OTP code inputs effortlessly! This jQuery plugin enables designers and developers to design visually appealing, secure OTP code input fields. Enjoy seamless integration and built-in validation events, ensuring a delightful user experience. Simplify OTP input implementation with ease.

Home Page: https://hichemtab-tech.github.io/OTP-designer-jquery/

License: MIT License

HTML 6.68% JavaScript 90.77% CSS 2.55%
bootstrap-input jquery jquery-plugin jqueryui one-time-password-inputs otp-inputs otp-ui otp-view bootstrap-otp custom-inputs

otp-designer-jquery's Introduction

OTP Designer jQuery Plugin

Overview

OTP-designer-jquery is a user-friendly jQuery plugin that enables you to create an easy-to-use One-Time Password (OTP) input system in your web applications. The plugin allows users to enter OTP codes with convenience and provides customizable options to adapt the OTP input to your design.

Table of Contents

Features

  • Simple and intuitive OTP input system.
  • Customize the number of OTP input fields.
  • Allow only numeric input or alphanumeric input (configurable).
  • Easily integrate with your existing jQuery projects.
  • Minimal and lightweight design.

Requirements

To use the OTP Designer jQuery Plugin, you need the following dependencies:

  • jQuery (minimum version 3.7.0) You can include these dependencies in your HTML file via CDN or by downloading the files locally.

Installation

To use the OTP Designer jQuery Plugin in your project, you can include the necessary files via npm, CDN or by downloading the files locally.

npm

You can install OTP-designer-jquery via npm:

  npm install otp-designer-jquery

CDN

You can also include OTP-designer-jquery directly from a CDN by adding the following script tag to your HTML file:

    <script src="https://cdn.jsdelivr.net/gh/HichemTab-tech/[email protected]/dist/otpdesigner.min.js"></script>

Local Download

If you prefer to host the library locally, you can download the latest release from the source code and include it in your project:

<script src="path/to/otpdesigner.min.js"></script>

Usage

To use the OTP Designer jQuery Plugin, follow these steps:

  • Include the necessary scripts and stylesheets as described in the installation section.
  • Create a target element in your HTML to initialize the OTP designer. You can use either options as an object or attributes to customize the OTP designer:
<!-- Option 1: Using attributes -->
<div id="otp_target" data-inputs-classes="some-class text-danger" data-otp-length="4"></div>

<!-- Option 2: Using options as an object -->
<div id="otp_target"></div>
  • Initialize the OTP designer on the target element using jQuery:
// Option 1: Using attributes
$('#otp_target').otpdesigner({
  typingDone: function (code) {
    console.log('Entered OTP code: ' + code);
  },
});

// Option 2: Using options as an object
$('#otp_target').otpdesigner({
  typingDone: function (code) {
    console.log('Entered OTP code: ' + code);
  },
  length: 4,
  onlyNumbers: false,
  inputsClasses: 'some-class text-danger',
});
  • Customize the options as needed.

Examples

Example 1: Basic Usage

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>OTP Designer jQuery Plugin - Basic Usage</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>
  <div class="container">
    <div class="card mt-5 p-3">
      <h1 class="h1">OTP Designer jQuery Plugin - Basic Usage</h1>
      <div id="otp_target"></div>
      <button class="btn btn-primary mt-3" id="ok">OK</button>
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
  <script src="dist/otpdesigner.js"></script>
  <script>
    $(document).ready(function() {
      $('#otp_target').otpdesigner({
        typingDone: function (code) {
          console.log('Entered OTP code: ' + code);
        },
      });

      $('#ok').on('click', function () {
        let result = $('#otp_target').otpdesigner('code');
        if (result.done) {
          alert('Entered OTP code: ' + result.code);
        } else {
          alert('Typing incomplete!');
        }
      });
    });
  </script>
</body>
</html>

Example 2: Customized OTP Input

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>OTP Designer jQuery Plugin - Customized OTP Input</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>
  <div class="container">
    <div class="card mt-5 p-3">
      <h1 class="h1">OTP Designer jQuery Plugin - Customized OTP Input</h1>
      <div id="otp_target" data-inputs-classes="form-control-lg" data-otp-length="8"></div>
      <button class="btn btn-primary mt-3" id="ok">OK</button>
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
  <script src="dist/otpdesigner.js"></script>
  <script>
    $(document).ready(function() {
      $('#otp_target').otpdesigner({
        typingDone: function (code) {
          console.log('Entered OTP code: ' + code);
        },
      });

      $('#ok').on('click', function () {
        let result = $('#otp_target').otpdesigner('code');
        if (result.done) {
          alert('Entered OTP code: ' + result.code);
        } else {
          alert('Typing incomplete!');
        }
      });
    });
  </script>
</body>
</html>

Example 3: Using Options as an Object

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>OTP Designer jQuery Plugin - Using Options as an Object</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>
  <div class="container">
    <div class="card mt-5 p-3">
      <h1 class="h1">OTP Designer jQuery Plugin - Using Options as an Object</h1>
      <div id="otp_target"></div>
      <button class="btn btn-primary mt-3" id="ok">OK</button>
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
  <script src="dist/otpdesigner.js"></script>
  <script>
    $(document).ready(function() {
      $('#otp_target').otpdesigner({
        typingDone: function (code) {
          console.log('Entered OTP code: ' + code);
        },
        length: 4,
        onlyNumbers: false,
        inputsClasses: 'some-class text-danger',
      });

      $('#ok').on('click', function () {
        let result = $('#otp_target').otpdesigner('code');
        if (result.done) {
          alert('Entered OTP code: ' + result.code);
        } else {
          alert('Typing incomplete!');
        }
      });
    });
  </script>
</body>
</html>

In these examples, the OTP designer is initialized inside the otp_target element with different configurations. The first example demonstrates the basic usage without custom options, while the second example shows a customized OTP input with larger input fields and a length of 8 digits. The third example demonstrates using options as an object to customize the OTP input.

Example 4: Using Context Menu Options

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>OTP Designer jQuery Plugin - Using Context Menu Options</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous">
</head>
<body>
  <div class="container">
    <div class="card mt-5 p-3">
      <h1 class="h1">OTP Designer jQuery Plugin - Using Context Menu Options</h1>
      <div id="otp_target"></div>
      <button class="btn btn-primary mt-3" id="ok">OK</button>
    </div>
  </div>
  <script src="https://code.jquery.com/jquery-3.7.0.min.js" integrity="sha256-2Pmvv0kuTBOenSvLm6bvfBSSHrUJ+3A7x6P5Ebd07/g=" crossorigin="anonymous"></script>
  <script src="dist/otpdesigner.js"></script>
  <script>
    $(document).ready(function() {
      $('#otp_target').otpdesigner({
        typingDone: function (code) {
          console.log('Entered OTP code: ' + code);
        },
        contextMenuElement: $('<div class="dropdown-menu" id="contextMenu" style="display: none; position: fixed;">\n' +
                              '    <a class="dropdown-item paste-action">Paste</a>\n' +
                              '</div>'),
        openContextMenuElement: function (e) {
          let $contextMenu = $('#contextMenu');
          $contextMenu.css({
            display: 'block',
            left: e.pageX,
            top: e.pageY
          });
          $('body').append($contextMenu);
        },
        closeContextMenuElement: function () {
          $('#contextMenu').hide();
        }
      });

      $('#ok').on('click', function () {
        let result = $('#otp_target').otpdesigner('code');
        if (result.done) {
          alert('Entered OTP code: ' + result.code);
        } else {
          alert('Typing incomplete!');
        }
      });
    });
  </script>
</body>
</html>

In this example, the context menu includes a "Paste" action, and the element that triggers the paste action has the class .paste-action. Functions to handle opening and closing the context menu are provided.

Options

Option Type Default Description
length Integer 6 The number of OTP input fields.
onlyNumbers Boolean false Allow only numeric input.
inputsClasses String "" Additional CSS classes to apply to the OTP input fields.
inputsParentClasses String "" Additional CSS classes to apply to the parent container of the OTP input fields.
typingDone Function null A callback function executed when the user completes typing the OTP.
enterClicked Function null A callback function executed when the user click on Enter key when he's done typing.
onchange Function null A callback function executed when the OTP code changed (by typing, clearing, setting).
contextMenuElement jQuery null A jQuery element used as the context menu for the OTP input fields. The element that triggers the paste action should have the class paste-action.
openContextMenuElement Function null A function to handle opening the context menu.
closeContextMenuElement Function null A function to handle closing the context menu.

Methods

The OTP Designer jQuery Plugin provides the following method:

  • code: Get the current OTP code entered by the user. Returns an object with properties:
Property Type Description
done Boolean A boolean indicating if the OTP code entry is complete.
code String The entered OTP code.
  • set: Set a value to the current OTP code.
  • clear: Clear the value of the current OTP code.
  • focus: Request a focus on the OTP code input.
  • option: Get or set an option dynamically.
  • addClass: Add style classes to the fake otp inputs classList.
  • removeClass: Remove style classes from the fake otp inputs classList.
  • hiddenInput: Return the hidden input element which stores the OTP code value.

Demo

Here's a Demo example :

Demo

Contributing

Contributions are always welcome!

If you have any ideas, improvements, or bug fixes, please open an issue or submit a pull request.

Author

License

MIT

otp-designer-jquery's People

Contributors

hichemtab-tech avatar imtiazahmeddahar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

otp-designer-jquery's Issues

Not working on mobile browser

Platform: Android
Browser: Chrome latest version

Input field: Cursor is not switching after filling in, after filling the value by switching manually, getting incorrect value.
WhatsApp Image 2023-08-16 at 3 52 35 PM

Chrome Debugger
WhatsApp Image 2023-08-16 at 3 54 40 PM

No method found to clear/empty the code

Discussed in #5

Originally posted by smartland007 August 28, 2023
Actually to clear the OTP (ex: when the code is false), we need to do the following, where each input have the class otp-content:
$('.otp-content').html("");

I was assuming to use the following:
$('#otp_target').otpdesigner('set', "");

Is it possible to have a dedicated event to clear/empty the code ?

OTP Boxes coming as divs not as input controls, due to this, QA team unable to Automate the flow

i integrated the plug in my project, every thing is good, until it meets QA team's automation,

image

here in the image, they telling nor they able to update OTP value with any of the ids like,

nor
input type hidden based control is updating the value. id is: otp_real_319

nor
textarea based control is updating the value.

how to deal with this, cant we change div based DOM framing with input with ids ?

thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.