recherche

Maison  >  Questions et réponses  >  le corps du texte

API de composition Vue 3 - désactivez le bouton d'envoi du formulaire jusqu'à ce que toutes les conditions soient remplies

Je souhaite désactiver le bouton d'envoi du formulaire jusqu'à ce que tous les champs de saisie soient remplis et qu'il n'y ait aucune erreur.

<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;
      }
    });
  }
})

Le bouton est désactivé par défaut, mais il ne « s'activera » pas de lui-même une fois les conditions déjà mentionnées remplies.

Jusqu'à présent, j'utilise des hooks de cycle de vie assistés nextTick(), ce qui ne m'aide évidemment pas dans ce cas.

L'état "désactivé" sera mis à jour dans la console, mais pas sur le DOM.

Comment puis-je résoudre ce problème ?

Bravo

P粉360266095P粉360266095373 Il y a quelques jours1053

répondre à tous(3)je répondrai

  • P粉180844619

    P粉1808446192023-11-14 00:30:04

    Vous devriez peut-être utiliser v-modelcompulated@input pour écouter les événements et modifier l'état du bouton désactivé.

    répondre
    0
  • P粉828463673

    P粉8284636732023-11-14 00:15:17

    La solution la plus simple consiste à utiliser la valeur 计算 pour définir l'état désactivé du bouton - en fonction de la valeur d'entrée - si certains sont vides, le bouton est désactivé

    Ceci est un exemple basique

    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');
    sssccc
    
    Input 1:
    Input 2:
    Input 3:

    répondre
    0
  • 尊渡假赌尊渡假赌尊渡假赌

    尊渡假赌尊渡假赌尊渡假赌2023-11-20 15:25:48

    . . . . Testez

    répondre
    0
  • Annulerrépondre