You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在执行getData函数前校验searchBar为空并弹出提示

解决方案

你需要在回车键触发的逻辑中新增输入非空校验,额外处理用户仅输入空格的场景,即可避免空值触发的接口错误。

修改说明

  • 在searchQuery函数判定按下回车键后,先对搜索框的值做trim()去首尾空格处理
  • 校验处理后的值是否为空:如果为空直接弹出提示,终止函数执行,不会发起后续接口请求

完整修改后代码

const searchbar = document.querySelector('.search-bar');
searchbar.addEventListener('keypress', searchQuery);

function searchQuery(evt) {
  if (evt.keyCode == 13) {
    // 新增非空校验逻辑
    const searchVal = searchbar.value.trim();
    if (!searchVal) {
      alert('请输入搜索内容后再查询');
      // 如果搜索框在表单内,可加下面一行阻止默认表单提交行为
      // evt.preventDefault();
      return;
    }
    getData(searchVal);
  }
}

// Run a fetch requst on api to return the data from searchbox in metric units converting it into json
function getData(query) {
  fetch(`${api.base}weather?q=${query}&units=metric&APPID=${api.key}`)
    .then(weather => {
      return weather.json();
    }).then(displayData);
}

可选优化点

  • 若项目有自定义弹窗组件,可替换原生alert,交互体验更统一
  • 可新增防抖逻辑,避免用户短时间内多次按回车重复发起请求
  • 可额外增加非法字符过滤规则,进一步降低接口报错概率

内容的提问来源于stack exchange,提问作者Andy1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 13:54:04