Angular가 자동으로 'ng-invalid' 클래스를 '필수' 필드에 추가하고 있습니다.
폼을 세팅한 각진 앱을 만들고 있습니다.제출 전에 작성해야 할 항목이 있습니다.따라서 '필수'를 추가했습니다.
<input type="text" class="form-control" placeholder="Test" ng-model="data.test" required>
그러나 앱을 실행하면 제출 버튼을 클릭하기 전 또는 사용자가 필드에 입력하기 전에 필드가 "비활성"으로 표시되고 "ng-invalid" 및 "ng-invalid-required" 클래스가 표시됩니다.
사용자가 양식을 제출하거나 해당 필드에 잘못 입력한 경우 두 개의 클래스가 즉시 추가되지 않도록 하려면 어떻게 해야 합니까?
입력이 비어있기 때문에 인스턴스화 시 비활성화되므로 Angular는 다음 값을 올바르게 추가합니다.ng-invalid
학급.
시도할 수 있는 CSS 규칙:
input.ng-dirty.ng-invalid {
color: red
}
기본적으로 페이지가 로드된 이후 필드에 어떤 것이 입력되어 있고, 이 필드에 의해 원래 상태로 리셋되지 않은 경우를 나타냅니다.$scope.formName.setPristine(true)
아직 입력되지 않은 것이 무효가 되면 텍스트가 바뀝니다.red
.
Angular 형식의 기타 유용한 클래스(향후 참조에 대한 입력 참조)
ng-valid-maxlength
- 언제ng-maxlength
패스
ng-valid-minlength
- 언제ng-minlength
패스
ng-valid-pattern
- 언제ng-pattern
패스
ng-dirty
- 폼 로드 후 입력된 것이 있는 경우
ng-pristine
- 폼 입력이 로드된 이후 삽입되지 않은 경우(또는 를 통해 재설정됨)setPristine(true)
폼으로)
ng-invalid
- 검증에 실패했을 때(required
,minlength
, 커스텀 등)
마찬가지로, 또한ng-invalid-<name>
이 모든 패턴과 커스텀으로 생성된 패턴에 대해 설명합니다.
이 게시물 덕분에 이 스타일을 사용하여 필수 필드가 표시될 때 부트스트랩과 함께 자동으로 나타나는 빨간색 테두리를 제거합니다. 그러나 사용자는 아직 아무것도 입력할 기회가 없었습니다.
input.ng-pristine.ng-invalid {
-webkit-box-shadow: none;
-ms-box-shadow: none;
box-shadow:none;
}
필드가 비어 있기 때문에 유효하지 않기 때문에ng-invalid
그리고.ng-invalid-required
클래스가 올바르게 추가됩니다.
수업을 이용할 수 있습니다.ng-pristine
필드를 이미 사용했는지 여부를 확인합니다.
폼이 전송되었거나 필드가 비활성화된 경우 확인을 위해 클래스를 동적으로 추가하십시오.양식 이름을 사용하여 'name' 속성을 입력에 추가합니다.부트스트랩의 예:
<div class="form-group" ng-class="{'has-error': myForm.$submitted && (myForm.username.$invalid && !myForm.username.$pristine)}">
<label class="col-sm-2 control-label" for="username">Username*</label>
<div class="col-sm-10 col-md-9">
<input ng-model="data.username" id="username" name="username" type="text" class="form-control input-md" required>
</div>
</div>
폼에 ng-timeout=" 속성이 있는 것도 중요합니다.
<form name="myForm" ng-submit="checkSubmit()" novalidate>
<!-- input fields here -->
....
<button type="submit">Submit</button>
</form>
다음 양식에 검증을 위한 선택적 함수를 추가할 수도 있습니다.
//within your controller (some extras...)
$scope.checkSubmit = function () {
if ($scope.myForm.$valid) {
alert('All good...'); //next step!
}
else {
alert('Not all fields valid! Do something...');
}
}
이제 앱을 로드할 때 'has-error' 클래스는 양식을 제출하거나 필드를 터치했을 때만 추가됩니다.
!myForm.username.
을 사용하다
myForm.username 입니다.
받아들여진 답은 정확하다.모바일의 경우 이 기능을 사용할 수도 있습니다(ng-module이 아닌 ng-module).
input.ng-invalid.ng-touched{
border-bottom: 1px solid #e74c3c !important;
}
언급URL : https://stackoverflow.com/questions/22443487/angular-is-automatically-adding-ng-invalid-class-on-required-fields
'programing' 카테고리의 다른 글
Spring Boot 테스트에서 다른 application.yml을 로드합니다. (0) | 2023.04.06 |
---|---|
1개의 CDN 또는 여러 개의 CDNS에서 파일 로드 (0) | 2023.04.06 |
Gravity Forms - 현재 페이지 번호 가져오기 (0) | 2023.04.06 |
'string' 유형에 'replaceAll' 속성이 없습니다. (0) | 2023.04.06 |
React를 사용하여 파일 구성 요소 업로드JS (0) | 2023.04.06 |