การตรวจสอบฟอร์ม AngularJS
- หน้าก่อน AngularJS ฟอร์ม
- หน้าต่อไป AngularJS API
AngularJS สามารถตรวจสอบข้อมูลการบอกเลข
การตรวจสอบฟอร์ม
AngularJS ให้การตรวจสอบฟอร์มทางกลุ่มบริการ
AngularJS จับตาดูสถานะของฟอร์มและช่องบอกเลข (input, textarea, select) และอนุญาตให้คุณแจ้งสถานะปัจจุบันแก่ผู้ใช้
AngularJS ยังมีข้อมูลเกี่ยวกับว่าพวกเขาได้ถูกสัมผัสหรือแก้ไขหรือไม่
คุณสามารถใช้คุณสมบัติ HTML5มาตรฐานเพื่อตรวจสอบการบอกเลข หรือสร้างฟังก์ชันการตรวจสอบของตัวเอง
การตรวจสอบทางกลุ่มบริการไม่สามารถปกป้องการบอกเลขของผู้ใช้ด้วยตัวเองได้. การตรวจสอบทางเซิร์ฟเวอร์ก็เป็นสำคัญ
required
ใช้คุณสมบัติ HTML5 required
ควรกรอกช่องบอกเลขที่กำหนด:
ตัวอย่าง
ช่องบอกเลขนี้เป็นข้อบังคับ:
<form name="myForm"> <input name="myInput" ng-model="myInput" required> </form> <p>สถานะที่เป็นที่สำคัญของการบันทึกคือ:</p> <h1>{{myForm.myInput.$valid}}</h1>
ใช้รูปแบบ HTML5 email
ค่าที่กำหนดต้องเป็นอีเมล์:
ตัวอย่าง
ค่าของช่องบอกเลขต้องเป็นอีเมล์:
<form name="myForm"> <input name="myInput" ng-model="myInput" type="email"> </form> <p>สถานะที่เป็นที่สำคัญของการบันทึกคือ:</p> <h1>{{myForm.myInput.$valid}}</h1>
สถานะฟอร์มและสถานะช่องข้อมูล
AngularJS จะปรับปรุงสถานะของฟอร์มและช่องข้อมูลต่อไป
ช่องข้อมูลมีสถานะต่อไปนี้:
$untouched
ช่องข้อมูลนี้ยังไม่ถูกสัมผัส$touched
ช่องข้อมูลนี้ถูกสัมผัส$pristine
ช่องข้อมูลนี้ยังไม่ถูกแก้ไข$dirty
ช่องข้อมูลนี้ถูกแก้ไข$invalid
เนื้อหาช่องข้อมูลไม่ถูกต้อง$valid
เนื้อหาช่องข้อมูลถูกต้อง
เหล่านี้เป็นคุณสมบัติของช่องข้อมูล สามารถเป็นความจริงหรือเท็จ
ฟอร์มมีสถานะต่อไปนี้:
$pristine
ยังไม่มีการแก้ไขช่องข้อมูลใดๆ$dirty
หนึ่งหรือหลายช่องข้อมูลถูกแก้ไข$invalid
เนื้อหาฟอร์มไม่ถูกต้อง$valid
เนื้อหาฟอร์มถูกต้อง$subscribed
ฟอร์มถูกส่ง
เหล่านี้เป็นคุณสมบัติของฟอร์ม สามารถเป็นความจริงหรือเท็จ
คุณสามารถใช้สถานะเหล่านี้เพื่อแสดงข้อความที่มีความหมายต่อผู้ใช้ ตัวอย่าง ถ้าช่องข้อมูลเป็นข้อบังคับและผู้ใช้ทิ้งว่าง ควรแจ้งเตือนผู้ใช้:
ตัวอย่าง
ถ้าช่องข้อมูลนี้ถูกสัมผัสและว่างเปล่า แสดงข้อความผิดพลาด:
<input name="myName" ng-model="myName" required> <span ng-show="myForm.myName.$touched && myForm.myName.$invalid">ชื่อเป็นข้อบังคับ。</span>
คลาส CSS
AngularJS จะเพิ่มคลาส CSS ให้กับฟอร์มและช่องข้อมูลตามสถานะของฟอร์มและช่องข้อมูล
คลาสต่อไปนี้ถูกเพิ่มเข้าช่องข้อมูลหรือถูกลบออกจากช่องข้อมูล:
ng-untouched
ช่องข้อมูลนี้ยังไม่ถูกสัมผัสng-touched
ช่องข้อมูลนี้ถูกสัมผัสng-pristine
ช่องข้อมูลนี้ยังไม่ถูกแก้ไขng-dirty
ช่องข้อมูลนี้ถูกแก้ไขng-valid
เนื้อหาช่องข้อมูลถูกต้องng-invalid
เนื้อหาช่องข้อมูลไม่ถูกต้องng-valid-key
ตรวจสอบแต่ละคีย์ในแต่ละครั้ง ตัวอย่าง:ng-valid-required
มีประโยชน์มากเมื่อมีหลายสิ่งที่ต้องผ่านการตรวจสอบng-invalid-key
ตัวอย่าง:ng-invalid-required
คลาสต่อไปนี้ถูกเพิ่มเข้าฟอร์มหรือถูกลบออกจากฟอร์ม:
ng-pristine
ไม่มีช่องข้อมูลที่ยังไม่ถูกแก้ไขng-dirty
หนึ่งหรือหลายช่องข้อมูลถูกแก้ไขng-valid
เนื้อหาฟอร์มถูกต้องng-invalid
เนื้อหาฟอร์มไม่ถูกต้องng-valid-key
ตรวจสอบแต่ละคีย์ในแต่ละครั้ง ตัวอย่าง:ng-valid-required
มีประโยชน์มากเมื่อมีหลายสิ่งที่ต้องผ่านการตรวจสอบng-invalid-key
ตัวอย่าง:ng-invalid-required
ถ้าค่าที่คลาสนำเสนอเป็น: false
แล้วคลาสเหล่านี้จะถูกลบออก
โปรดเพิ่มรูปแบบสำหรับคลาสเหล่านี้เพื่อให้โปรแกรมของคุณมีส่วนตัวที่ดีและมีประสิทธิภาพต่อผู้ใช้งาน
ตัวอย่าง
ใช้ CSS มาตรฐานเพื่อระบุรูปแบบ:
<style> input.ng-invalid { background-color: pink; }; input.ng-valid { background-color: lightgreen; }; </style>
ยังสามารถตั้งรูปแบบสำหรับฟอร์มได้เช่นกัน。
ตัวอย่าง
ใช้รูปแบบสำหรับฟอร์มที่ไม่มีการแก้ไข (ต้นฉบับ) และฟอร์มที่มีการแก้ไข:
<style> form.ng-pristine { background-color: lightblue; }; form.ng-dirty { background-color: pink; }; </style>
การตรวจสอบที่สร้างขึ้นแบบเดี่ยว
สร้างฟังก์ชันการตรวจสอบที่สร้างขึ้นแบบเดี่ยวต้องมีทักษะบางอย่าง; คุณจะต้องเพิ่มสัญญาณใหม่สู่โปรแกรม และใช้พารามิเตอร์บางอย่างที่กำหนดเพื่อการตรวจสอบภายในฟังก์ชัน
ตัวอย่าง
สร้างสัญญาณของตัวเอง ซึ่งมีฟังก์ชันการตรวจสอบที่สร้างขึ้นแบบเดี่ยว และใช้ my-directive
นำเสนอมัน
รายการนี้ถูกต้องเมื่อมีตัวอักษร "e" ในค่า
<form name="myForm"> <input name="myInput" ng-model="myInput" required my-directive> </form> <script> var app = angular.module('myApp', []); app.directive('myDirective', function() { return { require: 'ngModel', link: function(scope, element, attr, mCtrl) { function myValidation(value) { if (value.indexOf("e") > -1) { mCtrl.$setValidity('charE', true); } else { mCtrl.$setValidity('charE', false); }; return value; }; mCtrl.$parsers.push(myValidation); }; }; }); </script>การอธิบายตัวตัวอย่าง
ใน HTML สัญญาณใหม่จะถูกใช้ด้วยรูปแบบของรายการ my-directive
เพื่อนำเสนอ
ใน JavaScript พวกเราเพิ่มชื่อ myDirective
ใหม่
จำเป็นต้องระลึกถึงว่าเมื่อตั้งชื่อสัญญาณ คุณต้องใช้วิธีการชื่อแบบเรียงตามความหมาย myDirective
แต่ตอนที่เรียกใช้ คุณต้องใช้ชื่อที่แบ่งด้วยขีด my-directive
จากนั้น คุณจะกลับมาด้วยวัตถุที่กำหนด ngModel
คือ ngModelController
สร้างฟังก์ชันลิงค์ที่รับค่าพารามิเตอร์บางอย่าง ในจำนวนที่สี่ mCtrl
คือ ngModelController
จากนั้นกำหนดฟังก์ชัน myValidation
มันรับค่าพารามิเตอร์หนึ่ง ซึ่งคือค่าขององค์ประกอบส่วนประกอบของการบันทึก
ตรวจสอบว่าค่านี้มีตัวอักษร "e" หรือไม่ และตั้งค่าความถูกต้องของควบคุมโมเดล true
หรือ false
สุดท้ายmCtrl.$parsers.push(myValidation);
จะมี myValidation
จะใช้ฟังก์ชันเพิ่มเข้าไปในแนวที่มีฟังก์ชันอื่น ซึ่งจะทำงานทุกครั้งที่มีการเปลี่ยนค่าการคิดค้น
验证示例
<!DOCTYPE html> <html> <script src="https://cdn.staticfile.net/angular.js/1.6.9/angular.min.js"></script> <body> <h2>验证示例</h2> <form ng-app="myApp" ng-controller="validateCtrl" name="myForm" novalidate> <p>用户名:<br> <input type="text" name="user" ng-model="user" required> <span style="color:red" ng-show="myForm.user.$dirty && myForm.user.$invalid"> <span ng-show="myForm.user.$error.required">用户名是必填项。< </span> </p> <p>电子邮件:<br> <input type="email" name="email" ng-model="email" required> <span style="color:red" ng-show="myForm.email.$dirty && myForm.email.$invalid"> <span ng-show="myForm.email.$error.required">电子邮件是必填项。</span> <span ng-show="myForm.email.$error.email">无效的电子邮件地址。</span> </span> </p> <p> <input type="submit" ng-disabled="myForm.user.$dirty && myForm.user.$invalid || myForm.email.$dirty && myForm.email.$invalid"> </p> </form> <script> var app = angular.module('myApp', []); app.controller('validateCtrl', function($scope) {}} $scope.user = 'Bill Gates'; $scope.email = 'bill.gates@gmail.com'; }); </script> </body> </html>
คุณสมบัติฟอร์ม HTML novalidate ใช้เพื่อปิดกั้นการตรวจสอบเว็บเบราเซอร์โดยมาตรฐาน
ตัวอย่างการอธิบาย:
AngularJS คำสั่ง ng-model
เชื่อมโยงองค์ประกอบอินพุทกับโมดูล
วัตถุโมดูลมีคุณสมบัติสองรายการ:user
และ email
เนื่องจาก ng-show
เมื่อ user หรือ email มี $dirty
และ $invalid
เมื่อมีสถานการณ์ จึงจะแสดง spans ที่มีสี red
- หน้าก่อน AngularJS ฟอร์ม
- หน้าต่อไป AngularJS API