email address phone number validate improvements

This commit is contained in:
yuri
2018-12-21 12:56:56 +02:00
parent 0fd7f768a9
commit 8abde38ebf
3 changed files with 52 additions and 14 deletions
@@ -265,6 +265,7 @@
"fieldShouldBeGreater": "{field} shouldn't be less then {value}",
"fieldBadPasswordConfirm": "{field} not confirmed properly",
"fieldMaxFileSizeError": "File should not exceed {max} Mb",
"fieldValueDuplicate": "Duplicate value",
"fieldIsUploading": "Uploading in progress",
"resetPreferencesDone": "Preferences has been reset to defaults",
"confirmation": "Are you sure?",
+26 -13
View File
@@ -42,20 +42,33 @@ Espo.define('views/fields/email', 'views/fields/varchar', function (Dep) {
validateEmailData: function () {
var data = this.model.get(this.dataFieldName);
if (data && data.length) {
var re = /\S+@+\S+/;
var notValid = false;
data.forEach(function (row, i) {
var emailAddress = row.emailAddress;
if (!re.test(emailAddress) && emailAddress.indexOf(this.erasedPlaceholder) !== 0) {
var msg = this.translate('fieldShouldBeEmail', 'messages').replace('{field}', this.getLabelText());
this.showValidationMessage(msg, 'div.email-address-block:nth-child(' + (i + 1).toString() + ') input');
notValid = true;
}
}, this);
if (notValid) {
return true;
if (!data || !data.length) return;
var addressList = [];
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
var notValid = false;
data.forEach(function (row, i) {
var address = row.emailAddress;
var addressLowerCase = String(address).toLowerCase();
if (!re.test(addressLowerCase) && address.indexOf(this.erasedPlaceholder) !== 0) {
var msg = this.translate('fieldShouldBeEmail', 'messages').replace('{field}', this.getLabelText());
this.showValidationMessage(msg, 'div.email-address-block:nth-child(' + (i + 1).toString() + ') input');
notValid = true;
return;
}
if (~addressList.indexOf(addressLowerCase)) {
var msg = this.translate('fieldValueDuplicate', 'messages').replace('{field}', this.getLabelText());
this.showValidationMessage(msg, 'div.email-address-block:nth-child(' + (i + 1).toString() + ') input');
notValid = true;
return;
}
addressList.push(addressLowerCase);
}, this);
if (notValid) {
return true;
}
},
+25 -1
View File
@@ -38,7 +38,7 @@ Espo.define('views/fields/phone', 'views/fields/varchar', function (Dep) {
listTemplate: 'fields/phone/list',
validations: ['required'],
validations: ['required', 'phoneData'],
validateRequired: function () {
if (this.isRequired()) {
@@ -50,6 +50,30 @@ Espo.define('views/fields/phone', 'views/fields/varchar', function (Dep) {
}
},
validatePhoneData: function () {
var data = this.model.get(this.dataFieldName);
if (!data || !data.length) return;
var numberList = [];
var notValid = false;
data.forEach(function (row, i) {
var number = row.phoneNumber;
var numberClean = String(number).replace(/[\s\+]/g, '');
if (~numberList.indexOf(numberClean)) {
var msg = this.translate('fieldValueDuplicate', 'messages').replace('{field}', this.getLabelText());
this.showValidationMessage(msg, 'div.phone-number-block:nth-child(' + (i + 1).toString() + ') input');
notValid = true;
return;
}
numberList.push(numberClean);
}, this);
if (notValid) {
return true;
}
},
data: function () {
var phoneNumberData;
if (this.mode == 'edit') {