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