Як зробити кнопку "подати" вимкнено?


127

Як відключити кнопку "Надіслати", поки форма не буде дійсною?

Чи має angular2 еквівалентний ng-disabled, який можна використовувати на кнопці "Надіслати"? (ng-disabled не працює для мене.)


1
лише тоді, коли ви використовуєте проміжну перевірку, наприклад, для введення тексту. Не робіть цього .. тільки з доброю думкою або з асинхронною валідацією, яка покладається, наприклад, на бекенд.
Сем Влобергс

Відповіді:


243

Як видно з цього кутового прикладу , є спосіб відключити кнопку, поки вся форма не буде дійсною:

<button type="submit" [disabled]="!ngForm.valid">Submit</button>

як отримати значення радіо та прапорець за допомогою formBuilder?
Pardeep Jain

Згадане посилання містить старі синтаксиси, наприклад, для angular2 ng-form-modal. попросіть його оновити подяку.
Pardeep Jain

Перевірте цей приклад, синтаксис оновлений
Angular University

1
як ви можете перевірити форму, якщо вимкніть кнопку для надсилання (якщо ви не робите це в потоці, але мені це не завжди подобається)? Будь ласка, майте на увазі тут проблеми щодо UX.
Сем Влобергс,

6
[disabled] = "ngForm.invalid" Ви також можете перевірити
shaunak1111

47

у куті 2.xx , 4 , 5 ...

<form #loginForm="ngForm">
    <input type="text" required> 
    <button  type="submit"  [disabled]="loginForm.form.invalid">Submit</button>
</form>

7

.html

<form [formGroup]="contactForm">

<button [disabled]="contactForm.invalid"  (click)="onSubmit()">SEND</button>

.ts

contactForm: FormGroup;

Хоча цей код може відповісти на питання, надаючи додатковий контекст щодо того, як та / або чому він вирішує проблему, покращить довгострокове значення відповіді.
Nic3500

5

Ось робочий приклад (вам доведеться повірити мені, що на контролері є метод submit () - він друкує Об'єкт, наприклад {user: 'abc'}, якщо в поле введення вводиться 'abc'):

<form #loginForm="ngForm" (ngSubmit)="submit(loginForm.value)">
    <input type="text" name="user" ngModel required>
    <button  type="submit"  [disabled]="loginForm.invalid">
        Submit
    </button>
</form>

Як ви можете бачити:

  • не використовуйте loginForm.form, просто використовуйте loginForm
  • loginForm.invalid працює так само, як! loginForm.valid
  • якщо ви хочете, щоб команда submit () передала правильне значення, вхідний елемент повинен мати ім'я та атрибути ngModel

Крім того, це коли ви НЕ використовуєте новий FormBuilder, який я рекомендую. Речі дуже різні, коли використовує FormBuilder.


4

Перевірка форми дуже прямо спрямована в Angular 2

Ось приклад,

<form (ngSubmit)="onSubmit()" #myForm="ngForm">

 <div class="form-group">
  <label for="firstname">First Name</label>
  <input type="text" class="form-control" id="firstname" 
   required [(ngModel)]="firstname" name="firstname">
 </div>

 <div class="form-group">
  <label for="middlename">Middle Name</label>
  <input type="text"  class="form-control" id="middlename" 
   [(ngModel)]="middlename" name="middlename">
 </div>

 <div class="form-group">
  <label for="lastname">Last Name</label>
  <input type="text"  class="form-control" id="lastname" 
   required minlength = '2' maxlength="6" [(ngModel)] = "lastname" name="lastname">
 </div>

 <div class="form-group">
  <label for="mobnumber">Mob Number</label>
  <input type="text"  class="form-control" id="mobnumber"  
   minlength = '2' maxlength="10" pattern="^[0-9()\-+\s]+$" 
   [(ngModel)] = "mobnumber" name="mobnumber">
 </div>

 <button type="submit" [disabled]="!myForm.form.valid">Submit</button>

</form>

Перевірте цей плункер на демонстрацію

Більше інформації


2

Важливо, щоб ви включили " обов'язкове " ключове слово у кожен із своїх обов'язкових вхідних тегів, щоб він працював.

 <form (ngSubmit)="login(loginForm.value)" #loginForm="ngForm">
    ...
    <input ngModel required name="username" id="userName" type="text" class="form-control" placeholder="User Name..." />
    <button type="submit" [disabled]="loginForm.invalid" class="btn btn-primary">Login</button>

0

Може бути нижче коду може допомогти:

<button type="submit" [attr.disabled]="!ngForm.valid ? true : null">Submit</button>

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.