npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

popup-validation

v3.0.3

Published

Pure JavaScript/CSS library for validating DOM input fields

Downloads

39

Readme

popup-validation

Pure JavaScript/CSS library for validating DOM input fields

Gemnasium Lib Size npm GitHub stars

Demo

JSFiddle

Install

npm install popup-validation --save

Read API

Usage

HTML

<link href="validation.min.css" rel="stylesheet">
<script src="validation.min.js"></script> 

<div>
  <label for="email">Email:</label>
  <input type="email" id="email" class="validate" 
         data-validate="required,email" />
</div>  

JS

Initialization

  • Track all the input fields inside of the <body>
validation.init();
  • Track all the input fields inside of a DOM container or a <form>. Submit event will be prevented if there are any errors
validation.init("#myForm");
  • Set options: trigger events (when popups should be shown). ["change", "paste", "blur", "keyup"] by default.
validation.init("#myForm", {
  events: ["change", "paste", "keyup"]
});

Usage

// Show errors
validation.highlight();

// Hide all errors
validation.hideAll();

// Check if all the input fields inside of a container are valid (body by default)
validation.isValid(); // returns true or false

// isValid() + highlight()
validation.validate(); // returns true or false

// Show a custom popup message on any DOM element
validation.show(el, message);

// Hide the popup message from the DOM element
validation.hide(el);

Custom Class Validation

Some services like Braintree use iframes to control the inputs on a page. That also can be useful if some javascript logic sets and removes a certain class to/from a div or input field that indicates that the field is not validated.

HTML

<div id="my_id">
  Click at me to toggle custom class validation
</div> 

JS

validation.addClassValidation("#my_id", ".my-class-invalid", 'Validation Message');

// Test
document.getElementById("my_id").addEventListener("click", e => {
  e.target.classList.toggle("my-class-invalid");
});

Predefined Rules

  • required
  • email
  • emails ("," or ";" delimiter)

The set of rules can be easily extended. Please take a look at the example

API

validation.init(el, options) => self

Initialize the validation fields inside of the el container. If el is a <form> element then the submit event will be prevented if there are any errors

Returns: object - Self validation instance for chain calls

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element | | options | Object | [Optional] Set of the properties |

Default Options

{
  events: ["change", "paste", "blur", "keyup"]
}

Affects all input fields with validate class

data-validate attr can contain the list of the rules

Example:

<input class="validate" data-validate="required" />
<input type="email" class="validate" data-validate="required,email" />

validation.destroy(el) => self

Deactivate the validation fields inside of the el container

Returns: object - Self validation instance for chain calls

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element |

validation.hideAll(el) => self

Hide all errors inside of the el container

Returns: object - Self validation instance for chain calls

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element |

validation.highlight(el) => self

Highlight all errors inside of the el container

Returns: object - Self validation instance for chain calls

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element |

validation.isValid(el) => boolean

Check if all input fields inside of the el container are valid

Returns: boolean - True if all input fields inside of the container are valid

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element |

validation.validate(el) => boolean

Validate all input fields inside of the el container

Returns: boolean - True if all input fields inside of the container are valid

| Param | Type | Description | | --- | --- | --- | | el | Element | Container or <form> Element |

validation.show(el, message) => void

Show a custom popup message on a DOM element

| Param | Type | Description | | --- | --- | --- | | el | Element | DOM element | | message | string | Custom message |

validation.hide(el) => void

Hide the shown custom popup message from the DOM element

| Param | Type | Description | | --- | --- | --- | | el | Element | DOM element |

validation.rules object

The set of the predefined rules

Rule signature

el => boolean

| Param | Type | Description | | --- | --- | --- | | el | Element | input field |

Returns: boolean - True if the field is validated

Example of extending rules

JS

validation.rules["integer"] = {
  message: "Value is not an integer",
  method: el => {
    return el.value === "" || /^-?\d+$/.test(el.value);
  }    
}

HTML

<input class="validate" data-validate="required,integer" />

validation.addClassValidation(target, selector, message) => self

Add class validation. For external libraries that can set/remove className of an element. For instance, braintree-hosted-fields-invalid class is set by braintree client library when iframe with the input field detects an error, More info here: https://developers.braintreepayments.com/guides/hosted-fields/styling/javascript/v2

Returns: object - Self validation instance for chain calls

| Param | Type | Description | | --- | --- | --- | | target | string|Element | Target DOM element where popup should be shown on | | selector | string | Selector that indicates that the field is invalid | | message | string | Optional. "Invalid" by default |


Browsers support made by godban

| IE / Edge | Firefox | Chrome | Safari | Opera | iOS Safari | Chrome for Android | | --------- | --------- | --------- | --------- | --------- | --------- | --------- | | IE9+ | Any | Any | Any | Any | Any | Any

License

MIT