Tôi có một biểu mẫu mà nếu một hộp kiểm là sai sẽ thực thi xác thực đối với đầu vào văn bản bằng cách sử dụng lệnh ng-Required. Nếu hộp kiểm là true, trường sẽ bị ẩn và ng-Required được đặt thành false.
Vấn đề là tôi cũng có một regex để xác thực được chỉ định trên đầu vào cũng như sử dụng chỉ thị góc ng-pattern. Vấn đề tôi đang gặp phải là nếu người dùng điền vào một số điện thoại không hợp lệ, hãy chọn hộp để hủy kích hoạt đầu vào đó (và do đó không cần xác thực thêm) thì biểu mẫu sẽ không cho phép gửi vì nó không hợp lệ dựa trên ng-pattern.
Tôi đã cố gắng giải quyết vấn đề này bằng cách thêm một hàm ng-change để đặt mô hình đầu vào thành null, tuy nhiên ng-pattern và do đó trường vẫn được đặt thành không hợp lệ trên tập hợp ban đầu của hộp kiểm thành false. Tuy nhiên, nếu tôi bỏ chọn hộp, đặt mọi thứ trở lại tải biểu mẫu ban đầu, sau đó chọn lại hộp, biểu mẫu hợp lệ và có thể gửi. Tôi không chắc chắn những gì tôi đang thiếu. Đây là mã ng-change mà tôi có cho đến nay:
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;
}
};