输入元素中的vuejs svg元素对点击事件没有反应
Posted
技术标签:
【中文标题】输入元素中的vuejs svg元素对点击事件没有反应【英文标题】:vuejs svg element within input element not reactive on click event 【发布时间】:2021-05-14 01:53:12 【问题描述】:在输入元素中,我有一个 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-
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</div>
【问题讨论】:
【参考方案1】:tailwindcss 中的pointer-events-none
类导致了该问题,请尝试将其删除:
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-
d="M6 18L18 6M6 6l12 12"
/>
</svg>
</div>
</div>
【讨论】:
以上是关于输入元素中的vuejs svg元素对点击事件没有反应的主要内容,如果未能解决你的问题,请参考以下文章
在 javascript 中的嵌入式 SVG 元素上添加点击事件
如何在不使用输入元素的情况下捕获 Vuejs 中的任何按键事件
在对象中的 SVG 元素上捕获鼠标事件,也是它的父容器 div