我有一种形式,如果复选框为false,则使用ng-required指令对文本输入强制执行验证。如果复选框为true,则该字段被隐藏,并且ng-required设置为false。
问题是我还使用ng-pattern angular指令在输入上指定了用于验证的正则表达式。我遇到的问题是,如果用户填写了无效的电话号码,请选中该框以停用该输入(因此无需进一步验证),该表单将不允许提交,因为基于ng-pattern表单无效。
我试图通过添加ng-change函数将输入模型设置为null来解决此问题,但是ng-pattern以及因此在复选框的初始设置为false时该字段仍设置为invalid。但是,如果我取消选中该框,将所有内容都设置为初始表单加载,然后再次选中该框,则该表单有效并且可以提交。我不确定我缺少什么。这是我到目前为止拥有的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;
}
};