javascript - 我可以在单击输入类型 = 搜索时向按钮添加事件吗?
问题描述
是否有任何可用于单击清除按钮的事件仅出现在 html5 搜索输入元素上?
这是我的尝试。但是如果我使用“搜索”,事件也会通过按回车触发。
即如果我按回车,控制台打印出搜索清除
mySearchBar.addEventListener("keydown", (e) => {
if (e.keyCode === ENTER_KEY_CODE) {
console.log("search");
//Display search results
}
});
mySearchBar.addEventListener("search", () => {
console.log("clear");
// Click the cross button of input type=search to Clear the search results and display all
});
};
解决方案
每次附加到输入时,您可以使用 eventListener 'input'
检查输入是否为空,然后如果没有值表示搜索输入已被清除。
编辑: keydown 事件中的增值测试
mySearchBar = document.getElementById('search');
mySearchBar.addEventListener("keydown", (e) => {
if (e.key === 'Enter') {
if (!e.currentTarget.value)
console.log('cleared');
else
console.log("search");
}
});
mySearchBar.addEventListener('input', (e) => {
if (!e.currentTarget.value)
console.log('cleared');
})
<input type=search id=search>
推荐阅读
- c# - 如何对 DataGridView 进行分组?
- node.js - 需要相同 peerDependency 的多个版本
- java - Selenium 预期条件,Webdriver 的实例从何而来?
- python - python中的混合整数二次规划
- php - 如何在 shopware 中添加来自后端控制器的重定向
- python - 多数据问卷名义值——如何汇总
- amazon-web-services - AWS Glue 请求限制
- java - 如何在多个子报表上使用相同的 JRBeanCollectionDataSource?
- android - 由 java.lang.IllegalStateException 引起:无法从带有 Room 的 CursorWindow 读取第 281 行第 0 列
- c# - 删除货币符号、1000 的分隔符并标准化十进制符号