我有一个表单,如果复选框为 false,则使用 ng-required 指令对文本输入进行验证。如果复选框为真,则该字段被隐藏并且 ng-required 设置为假。
问题是我还使用了 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;
}
};