Skip to content

Commit

Permalink
[ISSUE-138] Throw warning when multiple elements passed in constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Mar 14, 2019
1 parent 4afa2ce commit fc1bcca
Show file tree
Hide file tree
Showing 10 changed files with 60 additions and 12 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ var cleave = new Cleave('.input-phone', {
});
```

> `.input-element` here is a unique DOM element. If you want to apply Cleave for multiple elements, you need to give different css selectors and apply to each of them
> `.input-element` here is a unique DOM element. If you want to apply Cleave for multiple elements, you need to give different css selectors and apply to each of them, effectively, you might want to create individual instance by a loop, e.g. [loop solution](https://github.com/nosir/cleave.js/issues/138#issuecomment-268024840)
More examples: [the demo page](http://nosir.github.io/cleave.js/)

Expand Down
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"description":
"JavaScript library for formatting input text content when you are typing",
"keywords": ["cleave", "javascript", "html", "form", "input"],
"version": "1.4.9",
"version": "1.4.10",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
18 changes: 17 additions & 1 deletion dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,33 @@ return /******/ (function(modules) { // webpackBootstrap
*/
var Cleave = function (element, opts) {
var owner = this;
var hasMultipleElements = false;

if (typeof element === 'string') {
owner.element = document.querySelector(element);
hasMultipleElements = document.querySelectorAll(element).length > 1;
} else {
owner.element = ((typeof element.length !== 'undefined') && element.length > 0) ? element[0] : element;
if (typeof element.length !== 'undefined' && element.length > 0) {
owner.element = element[0];
hasMultipleElements = element.length > 1;
} else {
owner.element = element;
}
}

if (!owner.element) {
throw new Error('[cleave.js] Please check the element');
}

if (hasMultipleElements) {
try {
// eslint-disable-next-line
console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');
} catch (e) {
// Old IE
}
}

opts.initValue = owner.element.value;

owner.properties = Cleave.DefaultProperties.assign({}, opts);
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-angular.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/cleave-react-node.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/cleave-react.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 17 additions & 1 deletion dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,17 +64,33 @@ return /******/ (function(modules) { // webpackBootstrap
*/
var Cleave = function (element, opts) {
var owner = this;
var hasMultipleElements = false;

if (typeof element === 'string') {
owner.element = document.querySelector(element);
hasMultipleElements = document.querySelectorAll(element).length > 1;
} else {
owner.element = ((typeof element.length !== 'undefined') && element.length > 0) ? element[0] : element;
if (typeof element.length !== 'undefined' && element.length > 0) {
owner.element = element[0];
hasMultipleElements = element.length > 1;
} else {
owner.element = element;
}
}

if (!owner.element) {
throw new Error('[cleave.js] Please check the element');
}

if (hasMultipleElements) {
try {
// eslint-disable-next-line
console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');
} catch (e) {
// Old IE
}
}

opts.initValue = owner.element.value;

owner.properties = Cleave.DefaultProperties.assign({}, opts);
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"form",
"input"
],
"version": "1.4.9",
"version": "1.4.10",
"files": [
"src",
"dist",
Expand Down
18 changes: 17 additions & 1 deletion src/Cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,33 @@
*/
var Cleave = function (element, opts) {
var owner = this;
var hasMultipleElements = false;

if (typeof element === 'string') {
owner.element = document.querySelector(element);
hasMultipleElements = document.querySelectorAll(element).length > 1;
} else {
owner.element = ((typeof element.length !== 'undefined') && element.length > 0) ? element[0] : element;
if (typeof element.length !== 'undefined' && element.length > 0) {
owner.element = element[0];
hasMultipleElements = element.length > 1;
} else {
owner.element = element;
}
}

if (!owner.element) {
throw new Error('[cleave.js] Please check the element');
}

if (hasMultipleElements) {
try {
// eslint-disable-next-line
console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');
} catch (e) {
// Old IE
}
}

opts.initValue = owner.element.value;

owner.properties = Cleave.DefaultProperties.assign({}, opts);
Expand Down

0 comments on commit fc1bcca

Please sign in to comment.