首页 > 解决方案 > 输入元素中的vuejs svg元素对点击事件没有反应

问题描述

在输入元素中,我有一个 svg 图标,其中包含一个@click链接到方法的事件。但是点击它什么都不做。也试过@click.prevent @click.native没有成功。将 放在@click输入元素中使其在单击输入字段时起作用。但是,我只希望在输入字段中的 svg 图标上触发点击事件。帮助表示赞赏。

<input
  class="w-full pl-10 pr-3 py-3 border border-transparent leading-5 bg-gray-600 text-gray-100 placeholder-gray-400 focus:outline-none focus:bg-white focus:text-gray-900 sm:text-md transition duration-150 ease-in-out"
  type="text"
  v-model="search"
  @input="$emit('update:inputData', validatedSearch)"
  @keyup.down="onArrowDown()"
  @keyup.up="onArrowUp()"
/>
<div
  class="absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none"
>
  <svg
    xmlns="http://www.w3.org/2000/svg"
    v-show="search.length > 0"
    class="h-5 w-5 text-gray-400"
    stroke="currentColor"
    viewBox="0 0 20 20"
    @click="delSearch()"
  >
    <path
      stroke-linecap="round"
      stroke-linejoin="round"
      stroke-width="2"
      d="M6 18L18 6M6 6l12 12"
    />
  </svg>
</div>

标签: vue.jsvuejs2tailwind-css

解决方案


pointer-events-nonetailwindcss 中的类导致该问题,请尝试将其删除:

Vue.config.devtools = false;
Vue.config.productionTip = false;

new Vue({
  el: '#app',

  data() {
    return {
      search: ""
    }
  },
  methods: {
    delSearch() {
      console.log("delete search");
      this.search=""
    }
  }

})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">

<div id="app">
  <input class="border border-gray-500" type="text" v-model="search" />
  <div class=" inset-y-0 right-0 pr-3 flex items-center ">
    <svg xmlns="http://www.w3.org/2000/svg" v-show="search.length > 0" class="h-5 w-5 text-gray-400" stroke="currentColor" viewBox="0 0 20 20" @click="delSearch">
    <path
      stroke-linecap="round"
      stroke-linejoin="round"
      stroke-width="2"
      d="M6 18L18 6M6 6l12 12"
    />
  </svg>
  </div>
</div>


推荐阅读