简体   繁体   English

如何使用打字稿获取html元素的名称属性?

[英]How do I get the name attribute of my html element using typescript?

in my code I'm using the name attribute to check whether the user has entered in that field or not and checking if the field is valid. 在我的代码中,我使用name属性来检查用户是否已在该字段中输入,并检查该字段是否有效。 Now, I have a submit button but I want the submit button to only be active when the user has entered of field correctly. 现在,我有一个提交按钮,但是我希望仅当用户正确输入字段时,该提交按钮才处于活动状态。 So I have a code that checks whether the field is empty or not and enables the submit button, however, I want to only activate the submit button only when the fields are valid not when there isnt an empty field 所以我有一个代码检查该字段是否为空并启用提交按钮,但是,我只想仅在该字段有效时才激活提交按钮,而在没有空字段时才激活

<form>
<div>
  <label>Name</label>
    <input 
      id="userName" 
      required ngModel 
      name="Name"  
      #Name="ngModel"
      class="form-control" />
    <span 
      class="text-danger" 
      *ngIf="Name.touched && !Name.valid">Please enter your name</span>
 </div>
 <div>
                      <label>Email</label>
                      <input id="userEmail" required email class="form-control" name="Email" ngModel #Email="ngModel" type="email" />
                      <div class="text-danger" *ngIf="Email.touched && !Email.valid">Please enter a valid email</div>
                  </div>
                  <div>
                    <label>Subject</label>
                    <input id="userSubject" required ngModel name="Subject" #Subject="ngModel" class="form-control" />
                    <span class="text-danger" *ngIf="Subject.touched && !Subject.valid">Please enter the subject</span>
                  </div>
                  <div>
                      <label>Message</label>
                      <textarea 
                        id="userMessage"
                        required 
                        ngModel 
                        name="message" 
                        #message="ngModel" 
                        minlength="10" 
                        cols="40" 
                        rows="4" 
                        class="form-control">
                    </textarea>
                      <div *ngIf="message.touched && !message.valid" class="text-danger">A message of at least 10 characters is required</div>
                  </div>
                  <div style="padding-top:10px;">
                      <input type="submit" id="sendMessage" value="Send Message" class="btn btn-primary" disabled="disabled" />
                  </div>
                  <div class="text-success"></div>
              </form> 


Typescript:
@HostListener('window:load') Scroll(): void {
    $('#userName, #userEmail, #userSubject, #userMessage').keyup(function() {
      var empty = false;
      $('#userName, #userEmail, #userSubject, #userMessage').each(function() {
          if ($(this).val() == '') {
              empty = true;
          }
      });

      if (empty) {
          $('#sendMessage').attr('disabled', 'disabled'); 
      } else {
          $('#sendMessage').removeAttr('disabled');
      }
    });
}

You don't need to implement a host listener. 您不需要实现主机侦听器。 just use NgForm and FormGroup supported by Angular 2. 只需使用Angular 2支持的NgForm和FormGroup。

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { ReactiveFormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule, ReactiveFormsModule ], declarations: [ AppComponent ], bootstrap: [AppComponent] }) export class AppModule { } import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; @Component({ selector: 'app', templateUrl: 'app.component.html' }) export class AppComponent implements OnInit { registerForm: FormGroup; submitted = false; constructor(private formBuilder: FormBuilder) { } ngOnInit() { this.registerForm = this.formBuilder.group({ firstName: ['', Validators.required], lastName: ['', Validators.required], email: ['', [Validators.required, Validators.email]], password: ['', [Validators.required, Validators.minLength(6)]] }); } // convenience getter for easy access to form fields get f() { return this.registerForm.controls; } } 
 <div class="jumbotron"> <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <h2>Angular 6 Reactive Form Validation</h2> <form [formGroup]="registerForm" (ngSubmit)="onSubmit()"> <div class="form-group"> <label>First Name</label> <input type="text" formControlName="firstName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" /> <div *ngIf="submitted && f.firstName.errors" class="invalid-feedback"> <div *ngIf="f.firstName.errors.required">First Name is required</div> </div> </div> <div class="form-group"> <label>Last Name</label> <input type="text" formControlName="lastName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.lastName.errors }" /> <div *ngIf="submitted && f.lastName.errors" class="invalid-feedback"> <div *ngIf="f.lastName.errors.required">Last Name is required</div> </div> </div> <div class="form-group"> <label>Email</label> <input type="text" formControlName="email" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.email.errors }" /> <div *ngIf="submitted && f.email.errors" class="invalid-feedback"> <div *ngIf="f.email.errors.required">Email is required</div> <div *ngIf="f.email.errors.email">Email must be a valid email address</div> </div> </div> <div class="form-group"> <label>Password</label> <input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }" /> <div *ngIf="submitted && f.password.errors" class="invalid-feedback"> <div *ngIf="f.password.errors.required">Password is required</div> <div *ngIf="f.password.errors.minlength">Password must be at least 6 characters</div> </div> </div> <div class="form-group"> <button [disabled]="loading" class="btn btn-primary">Register</button> </div> </form> </div> </div> </div> </div> 

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { ReactiveFormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule, ReactiveFormsModule ], declarations: [ AppComponent ], bootstrap: [AppComponent] }) export class AppModule { } import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; @Component({ selector: 'app', templateUrl: 'app.component.html' }) export class AppComponent implements OnInit { registerForm: FormGroup; submitted = false; constructor(private formBuilder: FormBuilder) { } ngOnInit() { this.registerForm = this.formBuilder.group({ firstName: ['', Validators.required], lastName: ['', Validators.required], email: ['', [Validators.required, Validators.email]], password: ['', [Validators.required, Validators.minLength(6)]] }); } // convenience getter for easy access to form fields get f() { return this.registerForm.controls; } } 
 <div class="jumbotron"> <div class="container"> <div class="row"> <div class="col-md-6 offset-md-3"> <h2>Angular 6 Reactive Form Validation</h2> <form [formGroup]="registerForm" (ngSubmit)="onSubmit()"> <div class="form-group"> <label>First Name</label> <input type="text" formControlName="firstName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.firstName.errors }" /> <div *ngIf="submitted && f.firstName.errors" class="invalid-feedback"> <div *ngIf="f.firstName.errors.required">First Name is required</div> </div> </div> <div class="form-group"> <label>Last Name</label> <input type="text" formControlName="lastName" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.lastName.errors }" /> <div *ngIf="submitted && f.lastName.errors" class="invalid-feedback"> <div *ngIf="f.lastName.errors.required">Last Name is required</div> </div> </div> <div class="form-group"> <label>Email</label> <input type="text" formControlName="email" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.email.errors }" /> <div *ngIf="submitted && f.email.errors" class="invalid-feedback"> <div *ngIf="f.email.errors.required">Email is required</div> <div *ngIf="f.email.errors.email">Email must be a valid email address</div> </div> </div> <div class="form-group"> <label>Password</label> <input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }" /> <div *ngIf="submitted && f.password.errors" class="invalid-feedback"> <div *ngIf="f.password.errors.required">Password is required</div> <div *ngIf="f.password.errors.minlength">Password must be at least 6 characters</div> </div> </div> <div class="form-group"> <button [disabled]="!registerForm.valid" class="btn btn-primary">Register</button> </div> </form> </div> </div> </div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我如何让我的 html 输入元素影响我的 javascript 类对象值(字符名称) - How do i get my html input element to influence my javascript class object value(character name) 如何使用jQuery获取div中隐藏元素的名称属性? - How do I get the name attribute of a hidden element within a div using jQuery? 如何使用javascript获取元素的自定义属性值 - How do I get the custom attribute value of an element using javascript 如何使用JavaScript获取HTML元素的属性 - How to get attribute of HTML element using JavaScript jQuery:对于input元素的每个属性,我如何获得该输入元素的名称? - jQuery: For each attribute of an input element how do I get that input element's name? 如何获取此元素的数据集属性? - How do i get the dataset attribute of this element? 如何让 HTML div 元素使用 javascript 循环? - How do I get a HTML div element to loop using javascript? 如何使用 TypeScript 访问 HTML 复选框元素的“选中”属性? - How do I access the "checked" property of a HTML checkbox element using TypeScript? TypeScript-如何获取HTML元素(如在JavaScript中使用美元符号($)) - TypeScript - How to get an HTML element like using dollar sign ($) in Javascript 在 jQuery 中,如何通过 name 属性选择元素? - In jQuery, how do I select an element by its name attribute?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM