Rumah > Soal Jawab > teks badan
Saya ingin melumpuhkan butang hantar borang sehingga semua medan input diisi dan tiada ralat.
<button :disabled="disabled" type="submit" value="Submit" > Suggest </button> let disabled = ref(true); let error = ref(false); nextTick(() => { let inputs = Array.from(document.getElementsByClassName("form__input")); if (!error.value) { inputs.forEach((input) => { if (input.value === "") { disabled.value = true; } else { disabled.value = false; } }); } })
Butang dilumpuhkan secara lalai, tetapi ia tidak akan "mendayakan" dirinya apabila syarat yang telah dinyatakan dipenuhi.
Setakat ini saya menggunakan cangkuk kitar hayat berbantu nextTick()
yang jelas tidak membantu saya dalam kes ini.
Keadaan "dilumpuhkan" akan dikemas kini dalam konsol, tetapi bukan pada DOM.
Bagaimana saya boleh menyelesaikan masalah ini?
Sola
P粉1808446192023-11-14 00:30:04
Mungkin anda perlu menggunakan v-model
、compulated
或@input
untuk mendengar acara dan menukar keadaan butang dilumpuhkan.
P粉8284636732023-11-14 00:15:17
Penyelesaian paling mudah ialah menggunakan nilai 计算
untuk menetapkan keadaan lumpuh butang - berdasarkan nilai input - jika ada yang kosong, butang itu dinyahdayakan
Ini adalah contoh asas
const { ref, createApp, computed } = Vue; createApp({ setup() { const input1 = ref(""); const input2 = ref(""); const input3 = ref(""); // disabled is true if ANY input is empty string const disabled = computed(() => !input1.value || !input2.value || !input3.value); const clicked = () => console.log('clicked'); return { input1, input2, input3, disabled, clicked }; } }).mount('#app');
ssscccInput 1:
Input 2:
Input 3: