Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 35 additions & 16 deletions src/demo/index2.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,55 @@

<form method="post" id="form2submit" novalidate>
<div>
<label></label>
<input type="text" data-allow="onlyAlpha" name="name1" required>
<label>Only Alpha</label>
<input type="text" data-allow="onlyAlpha" name="name1" data-message="This field is required." required>
</div>
<div>
<label></label>
<input type="text" data-allow="onlyAlpha" name="name2" required>
<label>String</label>
<input type="text" data-allow="string" data-message="This also required." data-allowSpecial="+-" name="name2"
required>
</div>
<div>
<label></label>
<input type="text" data-allow="onlyAlpha" name="name3" required>
<label>Number</label>
<input type="number" name="name3" required>
</div>
<div>
<label>Min Validator</label>
<input type="text" data-allow="onlyAlpha" name="name4" min="5" required>
</div>
<div>
<label></label>
<input type="submit" value="Submit">
</div>
</form>

<!--<script src="./../js/validatorNew.js"></script>-->
<script src="./../js/validatorNew.es6.js"></script>
<script src="./../js/validatorNew.js"></script>
<!--<script src="./../js/validatorNew.es6.js"></script>-->

<script>

var form = new jsValidator().init({
form: 'form2submit',
forceFilter: true
});
// var form = new jsValidator().init({
// form: 'form2submit',
// forceFilter: true,
// message: {
// required: 'This field is required 123 !',
// min: '<br><span style="color: red;">This field is less then the limit [INDEX]</span>',
// max: 'This field is exceeds the limit of [INDEX]',
// password: 'Password doesn\'t match !'
// }
// });

var form = jsValidator.init({
form: 'form2submit',
forceFilter: true,
message: {
required: 'This field is required !',
min: 'This field is less then the limit [INDEX]',
max: 'This field is exceeds the limit of [INDEX]',
password: 'Password doesn\'t match !'
}

// var form = jsValidator.init({
// form: 'form2submit',
// forceFilter: true
// });
});

</script>
</body>
Expand Down
55 changes: 48 additions & 7 deletions src/js/validatorNew.es6.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ class jsValidator {
}
}
}
if (false == this.initialLoad) validationResponse.init(errorList);
if (false == this.initialLoad) validationResponse.init(errorList, this.option);

this.initialLoad = false;

Expand Down Expand Up @@ -184,7 +184,7 @@ class jsValidator {
let validElem = true;
// To Generally checks, the field is empty or not.
if (!jsRuleSets.isSet(activeElem)) {
log.push({'el': activeElem, 'type': 'empty', 'id': activeElem.name});
log.push({'el': activeElem, 'type': 'required', 'id': activeElem.name});
}
// To Check the Value is less than min or not.
if (activeElem.min) {
Expand Down Expand Up @@ -775,7 +775,8 @@ let pattern = {
let validationResponse = {

// Initiating the Response handler.
init: function (errorList) {
init: function (errorList, option) {
this.errorMessage = option.message;
// let errorElements = option.errorElem;
jsLogger.out('Errors', errorList);
this.input(errorList.input);
Expand All @@ -796,19 +797,30 @@ let validationResponse = {
},
// To process all handlers.
process: function (elem) {
var elementDefaultResponse = '';
for (let i in elem) {
// jsLogger.out('Element', document.getElementById(elem[i].id));
if (elem[i].el && true === elem[i].el.required) {
// Manage active element.
let activeElem = elem[i];
let errorType = elem[i].type;

errorType = this.errorMessage[errorType];

// Fetch from Element's direct message.
elementDefaultResponse = this.template(activeElem, errorType);

let spanTag = document.getElementById(activeElem.id);
jsLogger.out('Element Hit', activeElem.type);
jsLogger.out('Element Hit', errorType);
// Create new response Message SPAN.
if (typeof(spanTag) === 'undefined' || spanTag === null) {
jsLogger.out('Element Found', false);
spanTag = document.createElement('span');
spanTag.setAttribute('id', activeElem.id);
spanTag.innerHTML = 'Error ' + activeElem.type + ' - ' + Math.random().toString(36).substring(7);
spanTag.innerHTML = elementDefaultResponse;
} else {
spanTag.innerHTML = 'Error ' + activeElem.type + ' - ' + Math.random().toString(36).substring(7);
// Re-use Existing response Message SPAN.
spanTag.innerHTML = elementDefaultResponse;
jsLogger.out('Element Found', true);
}
jsLogger.out('Error Elem', activeElem.el);
Expand All @@ -818,7 +830,36 @@ let validationResponse = {
}
},
// Perform template creation and update.
template: function () {
template: function (activeElem, errorType) {
let elementDefaultResponse = '';
let errorIndex = '';
let activeError = '';
activeError = activeElem.el.getAttribute('data-message');

if (!activeError || activeError == '') {
if (errorType) {
activeError = errorType;
// If error type is Min or Max, then it will proceed responsive.
if (activeElem.type == 'min' || activeElem.type == 'max') {

if ('min' == activeElem.type) errorIndex = activeElem.el.min;
if ('max' == activeElem.type) errorIndex = activeElem.el.max;

activeError = activeError.replace('[INDEX]', errorIndex);
}

} else {
console.log('error type');
console.log(errorType);
console.log(this.errorMessage);
if (this.errorMessage[errorType]) {
activeError = this.errorMessage[errorType];
} else {
activeError = 'Error ' + errorType + ' - ' + Math.random().toString(36).substring(7);
}
}
}
elementDefaultResponse = activeError;
return elementDefaultResponse;
}
};
67 changes: 54 additions & 13 deletions src/js/validatorNew.js
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ var jsValidator = {
}
}

if (false == this.initialLoad) validationResponse.init(errorList);
if (false == this.initialLoad) validationResponse.init(errorList, this.option);

this.initialLoad = false;

Expand Down Expand Up @@ -177,7 +177,7 @@ var jsValidator = {
var validElem = true;
// To Generally checks, the field is empty or not.
if (!jsRuleSets.isSet(activeElem)) {
log.push({'el': activeElem, 'type': 'empty', 'id': activeElem.name});
log.push({'el': activeElem, 'type': 'required', 'id': activeElem.name});
}
// To Check the Value is less than min or not.
if (activeElem.min) {
Expand Down Expand Up @@ -479,8 +479,8 @@ var jsForm = {
},
// To set fields are required.
required: function () {
// let jsField = new jsField().init(this.options);
let forceFilter = this.forceFilter;
// var jsField = new jsField().init(this.options);
var forceFilter = this.forceFilter;
// Filter all required "input" elements.
this.input = jsField.required(this.input, forceFilter);
// Filter all required "select" elements.
Expand Down Expand Up @@ -539,7 +539,7 @@ var jsRuleSets = {
var value = elem.value;
var min = elem.min;
//TODO: Implement suitable solution for this.
if (value < min) status = false;
if (value.length < min && value.length != 0) status = false;
return status;
},
// To Check Element with Max Condition.
Expand All @@ -550,7 +550,7 @@ var jsRuleSets = {
var value = elem.value;
var max = elem.max;
//TODO: Implement suitable solution for this.
if (value > max) status = false;
if (value.length > max && value.length != 0) status = false;
return status;
},
// To Check Element Email is Valid or Not.
Expand Down Expand Up @@ -716,8 +716,9 @@ var pattern = {
var validationResponse = {

// Initiating the Response handler.
init: function (errorList) {
// let errorElements = option.errorElem;
init: function (errorList, option) {
this.errorMessage = option.message;
// var errorElements = option.errorElem;
jsLogger.out('Errors', errorList);
this.input(errorList.input);
this.select(errorList.select);
Expand All @@ -737,19 +738,30 @@ var validationResponse = {
},
// To process all handlers.
process: function (elem) {
for (let i in elem) {
var elementDefaultResponse = '';
for (var i in elem) {
// jsLogger.out('Element', document.getElementById(elem[i].id));
if (elem[i].el && true === elem[i].el.required) {
// Manage active element.
var activeElem = elem[i];
var errorType = elem[i].type;

errorType = this.errorMessage[errorType];

// Fetch from Element's direct message.
elementDefaultResponse = this.template(activeElem, errorType);

var spanTag = document.getElementById(activeElem.id);
jsLogger.out('Element Hit', activeElem.type);
jsLogger.out('Element Hit', errorType);
// Create new response Message SPAN.
if (typeof(spanTag) === 'undefined' || spanTag === null) {
jsLogger.out('Element Found', false);
spanTag = document.createElement('span');
spanTag.setAttribute('id', activeElem.id);
spanTag.innerHTML = 'Error ' + activeElem.type + ' - ' + Math.random().toString(36).substring(7);
spanTag.innerHTML = elementDefaultResponse;
} else {
spanTag.innerHTML = 'Error ' + activeElem.type + ' - ' + Math.random().toString(36).substring(7);
// Re-use Existing response Message SPAN.
spanTag.innerHTML = elementDefaultResponse;
jsLogger.out('Element Found', true);
}
jsLogger.out('Error Elem', activeElem.el);
Expand All @@ -759,7 +771,36 @@ var validationResponse = {
}
},
// Perform template creation and update.
template: function () {
template: function (activeElem, errorType) {
var elementDefaultResponse = '';
var errorIndex = '';
var activeError = '';
activeError = activeElem.el.getAttribute('data-message');

if (!activeError || activeError == '') {
if (errorType) {
activeError = errorType;
// If error type is Min or Max, then it will proceed responsive.
if (activeElem.type == 'min' || activeElem.type == 'max') {

if ('min' == activeElem.type) errorIndex = activeElem.el.min;
if ('max' == activeElem.type) errorIndex = activeElem.el.max;

activeError = activeError.replace('[INDEX]', errorIndex);
}

} else {
console.log('error type');
console.log(errorType);
console.log(this.errorMessage);
if (this.errorMessage[errorType]) {
activeError = this.errorMessage[errorType];
} else {
activeError = 'Error ' + errorType + ' - ' + Math.random().toString(36).substring(7);
}
}
}
elementDefaultResponse = activeError;
return elementDefaultResponse;
}
};