Коллеги. доброго вечера!
Каким образом можно изменить маску ввода E-mail в детали "Средства связи контрагента"? Проблема в том, что она сейчас не принимает адрес в домене *.company - в маске стоит ограничение на 4 символа в строке после точки (а нужно 7)
Нравится
В общем и целом расписано здесь (см. пример 2)
Но нужно сказать, что у нас на версии 7.5 этот пример оказался некорректен в плане переопределения метода addItem, так как он не возвращает никаких item. Поэтому пришлось его полностью скопипастить из родительской BaseCommunicationDetail и заменить строчку
this.addColumnValidator("Number", newItem.validateField, newItem);
на
this.addColumnValidator("Number", this.validateCommunicationFormat, newItem);
Ну и, конечно, определить метод validateCommunicationFormat, в котором проверять в зависимости от типа средства связи по регэкспу формат и возвращать объект с invalidMessage и fullInvalidMessage.
Андрей, большое спасибо, всё получилось!
{ validateEmailFormat: function (value) { var invalidMessage = ""; var isValid = true; var communicationType = this.get("CommunicationType"); var number = value || this.get("Number"); // Проверка введенного E-mail на соответствие маске ввода. if (communicationType.value == "ee1c85c3-cfcb-df11-9b2a-001d60e938c6") { // E-mail isValid = (Ext.isEmpty(number) || new RegExp("^[0-9a-z_]+@[0-9a-z_]+\.[a-z]{2,10}$").test(number)); if (!isValid) { invalidMessage = "Укажите E-mail по формату"; } } return { fullInvalidMessage: invalidMessage, invalidMessage: invalidMessage }; }
Замечательно. Наверное стоит еще добавить дефис в список символов допустимых в E-mail. Только нужно добавлять его либо самым последним перед ], либо первым - сразу после [
ещё вопрос возник - как заставить код принимать русские символы в e-mail? Например, для info@сайт.рф. Вариант ^[0-9a-z_-\.]+@[0-9a-zа-яё_-\.]+\.[a-zа-яё]{2,10}$ почему-то не срабатывает
Здравствуйте, Антон!
Ваш вариант не будет работать.
Корректной маской будет:
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Zа-ЯА-Я0-9.-]+\.[a-zA-Zа-яА-Я]{2,10}$/;
Алексей, предложенный Вами вариант тоже не сработал. Может быть, для работы с кириллицей что-то дополнительно подключить нужно?
Несколько уточняющих уточняющих вопросов:
1) Вы замещали EmailHelper?
2) После замещения EmailHelper Вы скопировали весь код из материнской схемы и заменили одну строку определения параметра emailPattern?
3) После сохранения схемы необходимо очистить кэш браузера. Вы это сделали?
Тогда:
1) Заместите EmailHelper. В замещающую схему вставьте следующий код:
define('EmailHelper', ['ext-base', 'terrasoft', 'EmailHelperResources', 'ConfigurationConstants', 'MaskHelper'], function(Ext, Terrasoft, resources, ConfigurationConstants, MaskHelper) { function isEmailAddress(emailAddress) { var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Zа-яА-Я0-9.-]+\.[a-zA-Zа-яА-Я]{2,9}$/; return emailPattern.test(emailAddress); } function getEmailUrl(emailAddress) { if (isEmailAddress(emailAddress)) { return 'mailto:' + emailAddress; } return ''; } function onEmailUrlClick(emailAddress) { var url = getEmailUrl(emailAddress); if (!Ext.isEmpty(url)) { var win = window.open(url, '', 'height=1,width=1'); setTimeout(function() { win.close(); }, 1000); } } return { isEmailAddress: isEmailAddress, getEmailUrl: getEmailUrl, onEmailUrlClick: onEmailUrlClick }; });
2) Очистите кэш.
В результате Вы сможете создавать средства связи с типом Email с кириллическими символами в домене (например *.почта.рф) , а также с длиной домена в 9 символов (например, *.travel)