チェックボックスがfalseの場合、ng-requiredディレクティブを使用してテキスト入力の検証を強制するフォームがあります。チェックボックスがtrueの場合、フィールドは非表示になり、ng-requiredはfalseに設定されます。
問題は、入力で指定された検証用の正規表現もあり、ng-patternangularディレクティブを利用していることです。私が直面している問題は、ユーザーが無効な電話番号を入力した場合、その入力を無効にするチェックボックスをオンにすると(したがって、それ以上の検証は必要ありません)、ng-patternに基づいて無効であるため、フォームは送信を許可しません。
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;
}
};