У меня есть форма, которая, если флажок установлен в false, принудительно проверяет ввод текста с помощью директивы ng-required. Если флажок установлен в значение true, поле скрыто, а для параметра ng-required установлено значение false.
Проблема в том, что у меня также есть регулярное выражение для проверки, указанное на входе, а также с использованием угловой директивы ng-pattern. Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь вводит недопустимый номер телефона, устанавливает флажок, чтобы отключить этот ввод (и, следовательно, не требует дополнительной проверки), форма не разрешит отправку, поскольку она недействительна на основе ng-шаблона.
Я попытался решить эту проблему, добавив функцию ng-change, чтобы установить модель ввода на null, однако ng-pattern и, следовательно, поле по-прежнему недействительны при первоначальном наборе флажка в false. Однако, если я сниму флажок, вернув все к исходной загрузке формы, а затем снова установите флажок, форма действительна и может быть отправлена. Я не уверен, что мне не хватает. Вот код ng-change, который у меня есть:
var phoneNumberRegex = /^\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})$/;
$scope.phoneNumberPattern = phoneNumberRegex;
$scope.removeValidation = function() {
if ($scope.cell._newUser === false) {
$scope.request._number = '';
$scope.phoneNumberPattern = /[0-9a-zA-Z]?/;
} else {
$scope.phoneNumberPattern = phoneNumberRegex;
}
};