Menggunakan plugin TokenInput dan menggunakan validasi formController bawaan AngularJS.
Saat ini saya mencoba untuk memeriksa apakah bidang tersebut berisi teks, dan kemudian menyetel bidang ke valid jika memang demikian. Masalah dengan menggunakan plugin adalah itu menciptakan inputnya sendiri dan kemudian ul + li untuk stlying.
Saya memiliki akses ke addItem (formname) dan kemampuan saya di controller, saya hanya perlu mengaturnya ke $ valid.
Markup.
<form class="form-horizontal add-inventory-item" name="addItem">
<input id="capabilities" name="capabilities" token-input data-ng-model="inventoryCapabilitiesAutoComplete" data-on-add="addCapability()" data-on-delete="removeCapability()" required>
<div class="required" data-ng-show="addItem.capabilities.$error.required" title="Please enter capability."></div>
</form>
JS.
$scope.capabilityValidation = function (capability) {
if (capability.name !== "") {
addItem.capabilities.$valid = true;
addItem.capabilities.$error.required = false;
} else {
addItem.capabilities.$valid = false;
addItem.capabilities.$error.required = true;
}
};
Saya menjalankan fungsi abilityValidation ketika TokenInput memiliki sesuatu yang masuk dan meneruskan objek.
EDIT:
Mengetahui ng-model pada masukan saya melakukan banyak hal dan mendapatkan hasil pelengkapan otomatis, itulah sebabnya saya tidak bisa mendapatkan ng-valid untuk bekerja karena didasarkan pada model.
$scope.inventoryCapabilitiesAutoComplete = {
options: {
tokenLimit: null
},
source: urlHelper.getAutoComplete('capability')
};
Saya tidak menulis implementasi pelengkapan otomatis ini, apakah ada cara lain untuk melakukan ini di mana saya akan memiliki akses ke attr model-ng dan memindahkan fungsi model ke tempat lain?
sumber
<div ... data-ng-show="capabilities_error" ...>
Dengan kata lain, apakah ada alasan Anda ingin / perlu menggunakan FormController?addItem.capabilities.$valid = true
dan / atau menyetel addItem.capabilities. $ Error.required menjadi true atau false sebagaimana mestinya?Jawaban:
Anda tidak dapat langsung mengubah validitas formulir. Jika semua input turunan valid, formulirnya valid, jika tidak, maka tidak.
Yang harus Anda lakukan adalah mengatur validitas elemen input. Seperti itu;
Sekarang masukan (dan formulir) tidak valid. Anda juga dapat melihat kesalahan mana yang menyebabkan pembatalan.
sumber
capabilities
variabel? Saya memiliki array yang berisi nama input dan saya ingin mengulang di dalam array dan mengaturnya tidak valid satu per satu: /name
atribut formulir dan atribut masukanid
. Ini berbeda dari nilai yang ditetapkan olehngModel
$scope.addItem['myVariableName'].$setValidity("youAreFat", false);
$scope.addItem.capabilities.$setValidity("youAreFat", false);
Jawaban di atas tidak membantu saya memecahkan masalah saya. Setelah pencarian yang lama, saya menemukan solusi parsial ini .
Saya akhirnya memecahkan masalah saya dengan kode ini untuk mengatur field input secara manual ke ng-invalid (untuk mengatur ke ng-valid atur ke 'true'):
sumber
$setValidity
dengantrue
sebagai parameter kedua setiap kali input valid.Saya menemukan posting ini dengan masalah serupa. Perbaikan saya adalah menambahkan bidang tersembunyi untuk menahan status saya yang tidak valid.
Dalam kasus saya, saya memiliki bool nullable yang seseorang harus memilih salah satu dari dua tombol yang berbeda. jika mereka menjawab ya, entitas ditambahkan ke koleksi dan status tombol berubah. Sampai semua pertanyaan dijawab, (salah satu tombol di masing-masing pasangan memiliki klik) formulir tidak valid.
sumber
Ini sangat sederhana. Misalnya: di dalam Anda pengontrol JS gunakan ini:
atau
atau
atau
Semua bekerja untuk saya untuk kebutuhan yang berbeda. Hubungi jika ini menyelesaikan masalah Anda.
sumber