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

如何用JavaScript实现HTML表单根据文本输入内容下载对应PDF文件?

实现方案

首先可以给原有HTML元素添加唯一ID,方便JS选择操作,修改后的HTML代码如下:

<form action="" id="pdfDownloadForm">
  <span class="text-red" id="errorTip" style="display: none;">Invalid Code</span>
  <div class="input-group input-group-lg">
    <input type="text" class="form-control" id="pdfCodeInput" value="" required/>
    <input class="btn btn-primary" type="submit" value="DOWNLOAD" />
  </div>
</form>

添加如下JavaScript代码即可实现需求:

// 获取DOM元素
const downloadForm = document.getElementById('pdfDownloadForm');
const codeInput = document.getElementById('pdfCodeInput');
const errorTip = document.getElementById('errorTip');

// 监听表单提交事件
downloadForm.addEventListener('submit', function(e) {
  // 阻止默认表单提交跳转行为
  e.preventDefault();
  
  // 获取输入值并去除前后空格
  const inputCode = codeInput.value.trim();
  
  // 基础校验:可根据实际需求调整校验规则,比如仅允许数字、限定长度范围等
  if (!inputCode || /[^\w\d]/.test(inputCode)) {
    // 校验不通过显示错误提示
    errorTip.style.display = 'inline';
    return;
  }
  
  // 校验通过隐藏错误提示
  errorTip.style.display = 'none';
  
  // 构造PDF文件地址,可根据实际存放路径调整
  const pdfUrl = `./${inputCode}.pdf`;
  
  // 动态创建a标签触发下载
  const tempLink = document.createElement('a');
  tempLink.href = pdfUrl;
  tempLink.download = `${inputCode}.pdf`;
  document.body.appendChild(tempLink);
  tempLink.click();
  document.body.removeChild(tempLink);
});

补充说明

  • 如果需要限定只能输入4-5位数字,可将上述校验逻辑替换为if (!/^\d{4,5}$/.test(inputCode))即可
  • 若PDF文件统一存放在指定目录下,比如/resources/pdf/,直接修改pdfUrl的构造规则为/resources/pdf/${inputCode}.pdf即可
  • 代码同时支持回车键提交、点击DOWNLOAD按钮提交两种触发方式,符合需求要求
  • 若需要处理PDF文件不存在的场景,可在构造地址后先发起HEAD请求校验资源是否存在,校验通过后再触发下载即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:02