Saya memiliki formulir saya seperti ini:
<form name="myForm">
<input name="myText" type="text" ng-model="mytext" required />
<button disabled="{{ myForm.$invalid }}">Save</button>
</form>
Seperti yang Anda lihat, tombol dinonaktifkan jika input kosong tetapi tidak berubah kembali menjadi diaktifkan ketika berisi teks. Bagaimana saya bisa membuatnya bekerja?
Jawaban:
Anda harus menggunakan nama formulir Anda, dan juga non -aktif: Ini demo di Plunker
sumber
<div ng-form="myForm"> ... stuff here .. </div>
. Meskipun, jika Anda mengirimkan nilai dari input, dengan menekan tombol, saya sangat merekomendasikan menggunakan<form/>
tag, jika tidak ada alasan lain selain itu memungkinkan pengguna untuk menekan [ENTER] dan mengirimkan formulir. Tetapi itu juga kemungkinan merupakan praktik yang lebih baik karena hal-hal seperti masalah aksesibilitas.Untuk menambah jawaban ini. Saya baru tahu bahwa itu juga akan rusak jika Anda menggunakan tanda hubung dalam nama formulir Anda (Angular 1.3):
Jadi ini tidak akan berfungsi:
sumber
myForm.$invalid
masih akan berfungsi, jadi dalam kasus Anda, saya pikirmy_formset_name0.$invalid
harus bekerja.Respons yang dipilih sudah benar, tetapi seseorang seperti saya, mungkin memiliki masalah dengan validasi async dengan mengirim permintaan ke sisi server - tombol tidak akan dinonaktifkan selama pemrosesan permintaan yang diberikan, sehingga tombol akan berkedip, yang terlihat cukup aneh bagi pengguna.
Untuk membatalkan ini, Anda hanya perlu menangani bentuk $ pending dari formulir:
sumber
!myForm.$valid
yang menangani masalah Pending async juga. itnext.io/valid-and-invalid-in-angular-forms-61cfa3f2a0cdJika Anda menggunakan Formulir Reaktif, Anda dapat menggunakan ini:
sumber
(click)
dan[disabled]
bukan kode AngularJS yang valid, juga bukan Reaktif yang merupakan bagian dari kerangka kerja AngularJS. "Angular adalah nama untuk Angular hari ini dan besok. AngularJS adalah nama untuk semua versi v1.x Angular" angular.io/guide/ajs-quick-referenceKami dapat membuat arahan sederhana dan menonaktifkan tombol sampai semua bidang wajib diisi.
Untuk Info Lebih Lanjut klik di sini
sumber
ng-disabled
di sudut 1.x dan[disabled]
di sudut 2 | 4.x yang jauh lebih baik diuji daripada ini ?. Kedua, mengapa memiliki arahan yang mencakup ke bentuk untuk menonaktifkan tombol bersarang, itu super spesifik. IMO solusi yang dipikirkan dengan buruk.Jika Anda ingin sedikit lebih ketat
sumber