ฉันมีแบบฟอร์มว่าหากช่องทำเครื่องหมายเป็นเท็จบังคับใช้การตรวจสอบความถูกต้องในการป้อนข้อความโดยใช้คำสั่งที่จำเป็นต้องใช้ ng หากช่องทำเครื่องหมายเป็นจริงช่องจะถูกซ่อนไว้และกำหนดค่า ng-required เป็นเท็จ
ปัญหาคือฉันยังมี regex สำหรับการตรวจสอบความถูกต้องที่ระบุไว้ในอินพุตด้วยเช่นกันโดยใช้คำสั่งเชิงมุมรูปแบบ ng ปัญหาที่ฉันพบคือหากผู้ใช้กรอกหมายเลขโทรศัพท์ที่ไม่ถูกต้องให้ทำเครื่องหมายที่ช่องเพื่อปิดการใช้งานข้อมูลนั้น (และไม่จำเป็นต้องตรวจสอบความถูกต้องเพิ่มเติม) แบบฟอร์มจะไม่อนุญาตให้ส่งเนื่องจากไม่ถูกต้องตามรูปแบบ ng
ฉันพยายามแก้ไขปัญหานี้โดยเพิ่มฟังก์ชัน ng-change เพื่อตั้งค่ารูปแบบการป้อนข้อมูลเป็น null อย่างไรก็ตามรูปแบบ ng จึงยังคงตั้งค่าฟิลด์ไม่ถูกต้องในชุดเริ่มต้นของช่องทำเครื่องหมายเป็นเท็จ อย่างไรก็ตามหากฉันยกเลิกการเลือกช่องตั้งค่าทุกอย่างกลับไปที่การโหลดแบบฟอร์มเริ่มต้นจากนั้นทำเครื่องหมายที่ช่องอีกครั้งแบบฟอร์มนั้นถูกต้องและสามารถส่งได้ ฉันไม่แน่ใจว่าฉันขาดอะไรไป นี่คือรหัส 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;
}
};