Le curseur ne disparaît pas lorsque vous cliquez ailleurs sur la page vue

王林
Libérer: 2023-05-05 22:06:07
original
1178 Les gens l'ont consulté

Lorsque nous utilisons Vue pour développer des pages, nous rencontrons souvent des situations où le curseur dans la zone de saisie ne disparaît pas lorsque l'on clique ailleurs sur la page. Ce problème semble simple, mais s'il n'existe pas de manière correcte de le résoudre, il peut grandement affecter l'expérience interactive de l'utilisateur. Cet article fournira quelques solutions à ce problème.

Analyse du problème

Lorsque nous lions l'attribut v-model d'une zone de saisie dans un composant Vue, lorsque l'utilisateur saisit dans la zone de saisie, le curseur se déplace dans la zone de saisie en suivant le contenu saisi par l'utilisateur. Mais lorsque l'utilisateur clique sur d'autres zones de la page, le curseur ne disparaît pas, ce qui entraînera une expérience de fonctionnement plus gênante.

La cause première de ce problème est que nous n'avons pas géré les événements déclenchés lorsque l'utilisateur clique sur la zone de non-saisie. Normalement, lorsque nous cliquons sur d'autres zones, nous devons déclencher manuellement l'événement de flou de la zone de saisie afin que la zone de texte perde le focus et que le curseur soit éliminé.

Solution

Option 1 : utilisez v-on:blur pour lier l'événement flou dans le composant Vue

L'utilisation de la directive v-on dans le composant Vue peut facilement lier les événements DOM. Nous pouvons lier un événement de flou à la zone de saisie Lorsque l'utilisateur clique sur une autre zone, l'événement est déclenché et la zone de saisie perd le focus, éliminant ainsi le curseur.

Exemple de code :

<template>
  <div>
    <input v-model="inputValue" v-on:blur="inputBlur">
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ""
    };
  },
  methods: {
    inputBlur() {
      this.$refs.input.blur();
    }
  }
};
</script>
Copier après la connexion

Dans l'exemple de code ci-dessus, nous avons lié un événement de flou à la zone de saisie et appelé la méthode de flou de la zone de saisie dans le gestionnaire d'événements.

Option 2 : Utiliser les instructions Vue pour personnaliser le comportement des éléments

Les instructions Vue (Directive) peuvent nous aider à personnaliser le comportement des éléments HTML. Sur cette base, nous pouvons personnaliser une instruction v-blur dans le composant Vue Lorsque l'utilisateur clique sur une zone autre que la zone de saisie, l'instruction est déclenchée et la zone de saisie perd le focus, éliminant ainsi le curseur.

Exemple de code :

<template>
  <div>
    <input v-model="inputValue" v-blur>
  </div>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ""
    };
  },
  directives: {
    blur: {
      bind: function(el, binding, vnode) {
        function documentHandler(e) {
          if (el.contains(e.target)) {
            return false;
          }
          el.blur();
        }
        el.__vueBlur__ = documentHandler;
        document.addEventListener("click", documentHandler);
      },
      unbind: function(el, binding) {
        document.removeEventListener("click", el.__vueBlur__);
        delete el.__vueBlur__;
      }
    }
  }
};
</script>
Copier après la connexion

Dans l'exemple de code ci-dessus, nous définissons une directive de flou et y lions une fonction documentHandler(). Dans la fonction, nous écoutons l'événement click du document Lorsque l'utilisateur clique sur la zone sans zone de saisie, l'événement est déclenché et la méthode de flou de la zone de saisie est appelée.

Résumé

Que nous utilisions l'option un ou l'option deux, nous devons lier l'événement ou l'instruction correspondant à la zone de saisie, et appeler la méthode flou de la zone de saisie dans la fonction du gestionnaire d'événements pour lui faire perdre le focus et éliminer le curseur. Cela améliorera la convivialité de l'interaction avec l'utilisateur et améliorera l'expérience d'exploitation de l'utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!