javascript - 如何获得输入键来模拟按钮按下?
问题描述
我正在开发一个天气应用程序,我只希望在按下 Enter 键或用户单击提交时执行代码。问题是,只要按下任何键,代码就会执行,我不知道为什么?这通常不会有什么大不了的,但它每次都在请求 API,而我每分钟只收到 60 个请求,所以在那段时间内进行两到三个搜索就会达到这个限制。
let button = document.querySelector("#button");
let searchBox = document.querySelector("#search-box");
let city = document.querySelector(".city");
let feelsLike = document.querySelector(".feels-like");
let temperature = document.querySelector(".temp");
let weatherDescription = document.querySelector(".weather");
let windSpeed = document.querySelector(".wind");
let icons = document.querySelector(".icons");
searchBox.addEventListener("keypress", function (event) {
if (event.key === "Enter") {
document.getElementById("button").click();
}
fetch(
"https://api.openweathermap.org/data/2.5/weather?q=" +
searchBox.value +
"&units=metric&appid="
)
...Rest of code to be executed
)};
我认为输入键模拟按钮按下是有意义的,但我不完全确定如何做到这一点 - 不幸的是,我在网上使用的任何资源都没有帮助。
解决方案
在您的侦听器中,每次发生按键时,searchBox.addEventListener("keypress", function (event) {..}
您都会执行该功能。fetch
由于if
-condition 不包含您的fetch
执行。
尝试这个:
if (event.key === "Enter") {
document.getElementById("button").click();
fetch(
"https://api.openweathermap.org/data/2.5/weather?q=" +
searchBox.value +
"&units=metric&appid="
)
}
推荐阅读
- typescript - 打字稿功能扩展被破坏
- python - 没有循环或列表理解的元组中的 Numpy 访问元素
- r - 如何从 lme4 中提取公式的随机效应部分
- python - 如何将 Python 代码编译成共享库以在 C# 应用程序(如 Unity)中使用?
- .net - Travis CI:面向 .NET Core、.NET Framework 和 .NET Standard
- javascript - 如何设置等于窗口 URL 的变量?
- c - 我制作了两个代码,但我无法解释为什么这两个代码不同并产生不同的结果
- python - 熊猫合并确实错过了价值;匹配行
- parallel-processing - 如果循环中涉及的所有张量都在 GPU 上,我的 for 循环是否并行运行?
- python - 无法计算列中唯一值的频率