웹 프론트엔드 JS 튜토리얼 AngularJS_AngularJS의 양식 유효성 검사 프로그래밍에 대한 자세한 해석

AngularJS_AngularJS의 양식 유효성 검사 프로그래밍에 대한 자세한 해석

May 16, 2016 pm 03:53 PM
angularjs 형태

수요

  • 이름 필수
  • 사용자 이름은 선택 사항이며 최소 길이는 3자, 최대 길이는 8자입니다
  • 이메일은 필수는 아니지만 합법적인 이메일이어야 합니다
  • 검증에 실패한 양식은 제출할 수 없습니다.
  • 필수 또는 불법 이메일 형식 오류 메시지 표시
  • 정확하게 제출하시면 축하 메시지가 뜹니다

이제 우리의 목표를 알았으니 함께 만들어 봅시다.

Angular 형식 속성 $valid, $invalid, $pristine, $dirty

Angular는 양식의 유효성을 검사하는 데 도움이 되는 양식에 대한 속성을 제공하며 양식과 입력에 대한 다양한 정보를 제공하고 양식과 입력에 적용합니다.
속성 클래스
설명

  • $valid ng-valid 부울은 이 항목이 설정한 규칙에 따라 현재 확인되었는지 여부를 알려줍니다
  • $invalid ng-invalid 부울은 이 항목이 현재 설정한 규칙에 따라 확인에 실패하는지 여부를 알려줍니다.
  • $pristine ng-pristine Boolean 양식이나 입력 상자를 사용하지 않는 경우 참
  • $dirty ng-dirty Boolean 양식이나 입력 상자를 사용하는 경우 참

Angular는 각 상태에 따라 스타일을 설정할 수 있도록 폼과 입력 상자에 대한 클래스도 제공합니다.
양식 속성에 액세스

  • 방향 형식: <양식 이름>.
  • 입력 상자에 액세스: ..

양식 설정

간단한 양식을 사용하여 시연하겠습니다.

201561995404669.png (765×364)

두 개의 파일이 필요합니다:

  1. index.html 양식을 표시하는 데 사용하는 코드
  2. app.js Angular 애플리케이션 및 컨트롤러(코드가 거의 없음)

양식 코드 index.html

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
  <!-- CSS ===================== -->
  <!-- load bootstrap -->
  <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"> 
  <style>
    body   { padding-top:30px; }
  </style>
   
  <!-- JS ===================== -->
  <!-- load angular -->
  <script src="http://code.angularjs.org/1.2.6/angular.js"></script> 
  <script src="app.js"></script>
</head>
 
<!-- apply angular app and controller to our body -->
<body ng-app="validationApp" ng-controller="mainController">
<div class="container">
<div class="col-sm-8 col-sm-offset-2">
   
  <!-- PAGE HEADER -->
  <div class="page-header"><h1>AngularJS Form Validation</h1></div>
  
  <!-- FORM -->
  <!-- pass in the variable if our form is valid or invalid -->
  <form name="userForm" ng-submit="submitForm(userForm.$valid)" novalidate> <!-- novalidate prevents HTML5 validation since we will be validating ourselves -->
 
    <!-- NAME -->
    <div class="form-group">
      <label>Name</label>
      <input type="text" name="name" class="form-control" ng-model="name" required>
    </div>
 
    <!-- USERNAME -->
    <div class="form-group">
      <label>Username</label>
      <input type="text" name="username" class="form-control" ng-model="user.username" ng-minlength="3" ng-maxlength="8">
    </div>
     
    <!-- EMAIL -->
    <div class="form-group">
      <label>Email</label>
      <input type="email" name="email" class="form-control" ng-model="email">
    </div>
     
    <!-- SUBMIT BUTTON -->
    <button type="submit" class="btn btn-primary">Submit</button>
     
  </form>
 
</div><!-- col-sm-8 -->
</div><!-- /container -->
</body>
</html>
로그인 후 복사

몇 가지 핵심 사항은 다음과 같습니다.

  • novalidate: 기본 HTML5 유효성 검사를 방지합니다. 왜냐하면 우리가 직접 수행하기 때문입니다(우리 자신이 더 나을 것입니다).
  • 입력 상자에 ng-model을 적용하여 양식의 데이터를 각도 변수에 바인딩했습니다.
  • 사용자 이름의 ng-minlength 및 ng-maxlength는 자체 규칙을 생성합니다
  • 이름 입력란은 필수입니다
  • 이메일 입력 상자에는 type="email" 속성이 있습니다


검증 규칙

Angular에는 dng-max 길이보다 tong-min 길이 등 많은 검증 규칙이 있습니다.

Angular는 자체 규칙을 구성할 수도 있습니다.

<input
  ng-model="{ string }"
  name="{ string }"
  required
  ng-required="{ boolean }"
  ng-minlength="{ number }"
  ng-maxlength="{ number }"
  ng-pattern="{ string }"
  ng-change="{ string }">
</input>
로그인 후 복사

이제 양식이 생성되었으므로 Angular 애플리케이션과 컨트롤러인 ng-app ng-controller를 만듭니다.
Codeapp.js 적용

// app.js
// create angular app
var validationApp = angular.module('validationApp', []);
 
// create angular controller
validationApp.controller('mainController', function($scope) {
 
  // function to submit the form after all validation has occurred      
  $scope.submitForm = function(isValid) {
 
    // check to make sure the form is completely valid
    if (isValid) {
      alert('our form is amazing');
    }
 
  };
 
});
로그인 후 복사


HTML5 유효성 검사기의 유효성 검사 취소 활성화

우리는 양식에 novalidate를 사용합니다. 유효성 검사는 우리가 직접 처리하므로 이는 좋은 습관입니다. 우리의 폼이 이렇게 하도록 놔두면 보기 흉해 보일 것입니다.

201561995443961.png (641×170)

제출 버튼 비활성화 ng-disabled

이제 진짜 쇼가 시작됩니다. Angular 속성을 사용하기 시작합니다. 먼저 제출 버튼을 비활성화하겠습니다. 양식이 $invalid인 경우 해당 양식을 비활성화하고 싶습니다.

<!-- index.html -->
...
 
  <!-- SUBMIT BUTTON -->
  <button type="submit" class="btn btn-primary" ng-disabled="userForm.$invalid">Submit</button>
 
...
로그인 후 복사

단지 약간의 코드(ng-disabled)만 사용하면 양식이 $invalid인 경우 양식 버튼이 비활성화됩니다.
이는 이름 입력 필드가 필수이고 이메일 입력 필드에는 유효한 이메일이 필요함을 의미합니다.

eng-show를 사용하여 오류 메시지 표시

ng-valid 및 ng-invalid는 제공된 양식 규칙에 따라 입력 내용을 자동으로 검증합니다.

$valid와 같지 않거나 사용된 경우(미사용으로 표시할 수 없음) 입력 부분에 일부 오류 정보를 추가합니다.

<!-- index.html -->
...
 
  <!-- NAME -->
  <div class="form-group">
    <label>Name</label>
    <input type="text" name="name" class="form-control" ng-model="name" required>
    <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</p>
  </div>
 
  <!-- USERNAME -->
  <div class="form-group">
    <label>Username</label>
    <input type="text" name="username" class="form-control" ng-model="user.username" ng-minlength="3" ng-maxlength="8">
    <p ng-show="userForm.username.$error.minlength" class="help-block">Username is too short.</p>
    <p ng-show="userForm.username.$error.maxlength" class="help-block">Username is too long.</p>
  </div>
   
  <!-- EMAIL -->
  <div class="form-group">
    <label>Email</label>
    <input type="email" name="email" class="form-control" ng-model="email">
    <p ng-show="userForm.email.$invalid && !userForm.email.$pristine" class="help-block">Enter a valid email.</p>
  </div>
 
...
로그인 후 복사

就像这样 Angular 会根据规则来验证输入部分的$invalid 和 $pristine properties属性从而决定是否显示错误信息.

201561995503615.png (799×437)

格局类

Angular在验证输入或表单时的有效有否是已经提供了一些类,像是 (ng-valid,ng-invalid,ng-pristineandng-dirty).

你可以编辑自己喜欢的CSS . 你可以私有定制化这些类来实现特定的场景应用.

.ng-valid     { }
.ng-invalid   { }
.ng-pristine   { }
.ng-dirty     { }
 
/* really specific css rules applied by angular */
.ng-invalid-required     { }
.ng-invalid-minlength     { }
.ng-valid-max-length     { }
로그인 후 복사

使用 ng-class 根据条件添加类

因为我们使用了 Bootstrap, 我们将就使用它们提供的类(has-error). 这样就能围绕我们的form-group获得漂亮的错误信息和颜色.

ng-class 允许我们基于一个表达式添加类. 在这种情况下,我们想要想我们的form-group添加一个 has-error 类,如果输入框的状态是$invalid或者不是pristine的话.

其工作的方式是 ng-class="{ : }". 更多的信息,请读一读 Angular ngClass 文档吧.


<!-- index.html -->
...
 
  <!-- NAME -->
  <div class="form-group" ng-class="{ 'has-error' : userForm.name.$invalid && !userForm.name.$pristine }">
    <label>Name</label>
    <input type="text" name="name" class="form-control" ng-model="user.name" required>
    <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">You name is required.</p>
  </div>
   
  <!-- USERNAME -->
  <div class="form-group" ng-class="{ 'has-error' : userForm.username.$invalid && !userForm.username.$pristine }">
    <label>Username</label>
    <input type="text" name="username" class="form-control" ng-model="user.username" ng-minlength="3" ng-maxlength="8">
    <p ng-show="userForm.username.$error.minlength" class="help-block">Username is too short.</p>
    <p ng-show="userForm.username.$error.maxlength" class="help-block">Username is too long.</p>
  </div>
     
  <!-- EMAIL -->
  <div class="form-group" ng-class="{ 'has-error' : userForm.email.$invalid && !userForm.email.$pristine }">
    <label>Email</label>
    <input type="email" name="email" class="form-control" ng-model="user.email">
    <p ng-show="userForm.email.$invalid && !userForm.email.$pristine" class="help-block">Enter a valid email.</p>
  </div>
 
...
로그인 후 복사

现在我们的表单就有了恰当的Bootstrap错误类.

201561995526100.png (770×449)

只在提交表单后显示错误信息

有时候不想在用户正在输入的时候显示错误信息. 当前错误信息会在用户输入表单时立即显示. 由于Angular很棒的数据绑定特性,这是可以发生的. 因为所有的事务都可以在一瞬间发生改变,这在表单验证时会有副作用.

对于你想要只在表单正要提交之后才显示错误消息的场景, 你就需要对上面的代码做一些小调整.

  •     你要去掉提交按钮上的ng-disabled,因为我们想要用户即使是在表单没有全部验证完的情况下也能点击提交.
  •     你要在表单已经被提交之后添加一个变量. 在你的 submitForm() 函数中, 只要加入 $scope.submitted = true 就行了;. 一旦表单被提交,它就会保存提交值为true的submitted变量.
  •     将错误规则从ng-class="{ 'has-error' : userForm.name.$invalid && !userForm.name.$pristine }" 调整为 ng-class="{ 'has-error' : userForm.name.$invalid && !userForm.name.$pristine && submitted }". 这就确保了错误消息只会在表单被提交时被显示出来. 你也许会需要为这个变量调整所有其它的 ng-class 和 ng-show.

现在,只有在submitted变量被设置为true时才会显示错误信息.
 
只有在输入框之外点击时才显示错误消息

只有在输入框之外点击时才显示错误消息(也被叫做失去焦点 blur) 这一需求比在提交时验证要复杂一点. 在失去焦点时验证表单需要一个custom指令. 这是一个可以让你操作DOM的指令.

我们正在写一篇文章专门讨论此话题。同时,还有其他的一些资源讨论了创建custom指令来处理失去焦点的情况:

  •     http://coding-issues.blogspot.in/2013/10/angularjs-blur-directive.html
  •     http://blog.ejci.net/2013/08/06/dealing-with-focus-and-blur-in-angularjs-directives/
  •     http://plnkr.co/edit/Xfr7X6JXPhY9lFL3hnOw?p=preview

全部完成

现在一旦我们正确填写了所有的信息,我们的表单提交按钮就能使用了. 一旦我们提交了表单,我们将会见到我们设置的弹出消息.

201561995546318.png (376×169)

用了几行我们就可以:

  •     进行输入框验证
  •     显示表单错误消息
  •     定制样式类
  •     自动禁止和启用表单
  •     定制规则

如你所见,我们使用了Angular内置的表单验证技术来创建一个客户端验证表单.


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 양식 제출 후 페이지 점프를 구현하는 방법 PHP 양식 제출 후 페이지 점프를 구현하는 방법 Aug 12, 2023 am 11:30 AM

PHP 양식 제출 후 페이지 점프를 구현하는 방법 [소개] 웹 개발에서 양식 제출은 일반적인 기능 요구 사항입니다. 사용자가 양식을 작성하고 제출 버튼을 클릭한 후 일반적으로 양식 데이터는 처리를 위해 서버로 전송되어야 하며, 처리 후 사용자는 다른 페이지로 리디렉션됩니다. 이 기사에서는 양식 제출 후 PHP를 사용하여 페이지 점프를 구현하는 방법을 소개합니다. [1단계: HTML 양식] 먼저 사용자가 제출해야 하는 데이터를 채울 수 있도록 HTML 페이지에 양식이 포함된 페이지를 작성해야 합니다.

PHP 양식에서 사용자 권한 관리를 처리하는 방법 PHP 양식에서 사용자 권한 관리를 처리하는 방법 Aug 10, 2023 pm 01:06 PM

PHP 양식에서 사용자 권한 관리를 처리하는 방법 웹 애플리케이션이 지속적으로 개발되면서 사용자 권한 관리는 중요한 기능 중 하나입니다. 사용자 권한 관리는 애플리케이션에서 사용자의 운영 권한을 제어하고 데이터의 보안과 합법성을 보장할 수 있습니다. PHP 양식에서는 간단한 코드를 통해 사용자 권한 관리를 구현할 수 있습니다. 이 기사에서는 PHP 양식에서 사용자 권한 관리를 처리하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 사용자 역할 정의 및 관리 우선 사용자 역할을 정의하고 관리하는 것은 사용자 권한의 문제입니다.

JavaScript를 사용하여 양식의 입력 상자 내용에 대한 실시간 확인을 구현하는 방법은 무엇입니까? JavaScript를 사용하여 양식의 입력 상자 내용에 대한 실시간 확인을 구현하는 방법은 무엇입니까? Oct 18, 2023 am 08:47 AM

JavaScript를 사용하여 양식의 입력 상자 내용에 대한 실시간 확인을 구현하는 방법은 무엇입니까? 많은 웹 애플리케이션에서 양식은 사용자와 시스템 간의 가장 일반적인 상호 작용 방법입니다. 그러나 데이터의 정확성과 완전성을 보장하기 위해 사용자가 입력한 콘텐츠의 유효성을 검사해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 양식 입력 상자 내용의 실시간 확인을 구현하고 구체적인 코드 예제를 제공하는 방법을 알아봅니다. 양식 만들기 먼저 HTML로 간단한 테이블을 만들어야 합니다.

JavaScript를 사용하여 양식 입력 상자 내용의 자동 프롬프트 기능을 구현하는 방법은 무엇입니까? JavaScript를 사용하여 양식 입력 상자 내용의 자동 프롬프트 기능을 구현하는 방법은 무엇입니까? Oct 20, 2023 pm 04:01 PM

JavaScript를 사용하여 양식 입력 상자 내용의 자동 프롬프트 기능을 구현하는 방법은 무엇입니까? 소개: 양식 입력 상자 내용의 자동 프롬프트 기능은 웹 애플리케이션에서 매우 일반적이며 사용자가 올바른 내용을 빠르게 입력하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 이 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. HTML 구조 만들기 먼저 입력 상자와 자동 제안 목록이 포함된 HTML 구조를 만들어야 합니다. 다음 코드를 사용할 수 있습니다: &lt;!DOCTYP

HTML, CSS 및 jQuery를 사용하여 양식 자동 저장의 고급 기능을 구현하는 방법 HTML, CSS 및 jQuery를 사용하여 양식 자동 저장의 고급 기능을 구현하는 방법 Oct 28, 2023 am 08:20 AM

HTML, CSS 및 jQuery를 사용하여 양식 자동 저장의 고급 기능을 구현하는 방법 양식은 최신 웹 애플리케이션에서 가장 일반적인 요소 중 하나입니다. 사용자가 양식 데이터를 입력할 때 자동 저장 기능을 구현하는 방법은 사용자 경험을 향상시킬 뿐만 아니라 데이터 보안도 보장할 수 있습니다. 이 글에서는 HTML, CSS, jQuery를 사용하여 양식의 자동 저장 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 첨부합니다. 1. HTML 양식의 구조 먼저 간단한 HTML 양식을 만들어 보겠습니다.

PHP 양식 처리: 양식 데이터 쿼리 및 필터링 PHP 양식 처리: 양식 데이터 쿼리 및 필터링 Aug 07, 2023 pm 06:17 PM

PHP 양식 처리: 양식 데이터 쿼리 및 필터링 소개 웹 개발에서 양식은 중요한 상호 작용 방법입니다. 사용자는 추가 처리를 위해 양식을 통해 서버에 데이터를 제출할 수 있습니다. 이 기사에서는 PHP를 사용하여 양식 데이터의 쿼리 및 필터 기능을 처리하는 방법을 소개합니다. 양식 디자인 및 제출 먼저 쿼리 및 필터 기능이 포함된 양식을 디자인해야 합니다. 일반적인 양식 요소에는 입력 상자, 드롭다운 목록, 라디오 버튼, 확인란 등이 포함되며 특정 요구 사항에 따라 디자인할 수 있습니다. 사용자가 양식을 제출하면 데이터가 POS로 전송됩니다.

Laravel 양식 클래스 사용 팁: 효율성을 높이는 방법 Laravel 양식 클래스 사용 팁: 효율성을 높이는 방법 Mar 11, 2024 pm 12:51 PM

양식은 웹 사이트나 응용 프로그램을 작성하는 데 있어 필수적인 부분입니다. 널리 사용되는 PHP 프레임워크인 Laravel은 풍부하고 강력한 양식 클래스를 제공하여 양식 처리를 보다 쉽고 효율적으로 만듭니다. 이 글에서는 개발 효율성을 향상시키는 데 도움이 되는 Laravel 폼 클래스 사용에 대한 몇 가지 팁을 소개합니다. 다음은 구체적인 코드 예시를 통해 자세히 설명합니다. 양식 생성하기 Laravel에서 양식을 생성하려면 먼저 뷰에 해당 HTML 양식을 작성해야 합니다. 양식 작업 시 Laravel을 사용할 수 있습니다.

입문부터 숙달까지, 2022년 최신 5개 Anglejs 튜토리얼 입문부터 숙달까지, 2022년 최신 5개 Anglejs 튜토리얼 Jun 15, 2017 pm 05:50 PM

자바스크립트는 코드의 구성, 코드의 프로그래밍 패러다임, 객체지향 이론 측면에서 매우 독특한 언어입니다. 하지만 20년 동안 Javascript가 지배했음에도 불구하고 jQuery, Angularjs, 심지어 React와 같은 인기 프레임워크를 이해하려면 "Black Horse Cloud Classroom JavaScript Advanced Framework"를 시청하세요. 디자인 비디오 튜토리얼'을 참조하세요.

See all articles