javascript - JS onClick preventDefault 用于输入
问题描述
如何防止默认的 onClick 行为<input>
?
document.getElementById("main").onclick = function() {
document.getElementById("main").style.backgroundColor = "red";
}
#main {
background-color: blue;
}
<div id="main">
If you click here, change background to red.
<input id="search" type="search" value="If you click here, do nothing.">
</div>
解决方案
为了防止您的 div 在单击输入时更改其背景并且仅在直接单击 div 时更改它,只需将事件目标与事件当前目标(您添加点击侦听器的元素)进行比较并仅更改 div css如果目标与当前目标相同,如下所示:
const mainDiv = document.getElementById("main");
function checkClick(e) {
if (e.target === e.currentTarget) { // check if element clicked is the div itself or some other element in the div.
mainDiv.style.backgroundColor = "red";
}
}
mainDiv.addEventListener('click', checkClick);
#main {
background-color: blue;
}
<div id="main">
If you click here, change background to red.
<input id="search" type="search" value="If you click here, do nothing.">
</div>
事件目标:您单击的元素。
事件当前目标:单击侦听器正在侦听的元素。
推荐阅读
- eloquent - 为什么在编辑其中一个可变形模型的实例时,我的 morphTo 表中会出现重复条目?
- javascript - 日期字符串到日期对象的转换
- haskell - 如何正确调用 Data.OTP 中的 TOTP Func?
- python - 反转列表中元素的值
- javascript - 我有很多 poppers,希望打开的一个在另一个打开时关闭
- javascript - Vue - 如何从 Vuex 访问组件的属性
- json - 无法使用 python kubernetes-client 库修补 Kubernetes 节点
- reactjs - react-native-ui-kitten 与 Expo
- mysql - MYSQL - 如果字段为空,我的带有 wp_usermeta 的 Select 语句返回零行。为什么?
- algorithm - 最大堆算法任务