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

表单Submit按钮点击后result元素无法正常显示输入值

核心问题

你的功能失效和页面刷新无关,根本原因是违反了HTML的id唯一性规则:整个页面里你一共写了3个id="result"的<p>标签。
根据DOM API规则,document.getElementById('result')只会返回DOM树中第一个匹配该id的元素,也就是你放在提交按钮下方的那个p标签,后面两个放在打印区域的同名p标签永远不会被JS选中,自然不会显示你写入的内容。
你之前加的event.preventDefault()没有解决问题,是因为你找错了故障方向,默认提交刷新不是当前故障的诱因。
另外你的代码还存在一个隐性bug:直接使用submitButton变量绑定事件,但没有提前通过DOM方法获取这个按钮元素,运行时会抛出变量未定义的错误。

修复方法

方法1:多位置同步展示结果

如果需要在输入区、打印区多个位置同时展示输入内容,给每个展示位设置唯一id,JS中统一赋值:

  1. 修改HTML中重复的result id:
<!-- 输入区提交按钮旁的提示位 -->
<p id='result-tip'></p>

<!-- 打印区域第一处金额展示位 -->
<p id='result-amount-1'></p>

<!-- 打印区域第二处金额展示位 -->
<p id='result-amount-2'></p>
  1. 调整JS逻辑,先获取按钮元素再绑定事件,给所有展示位同步写入内容:
// 先获取按钮DOM
const submitButton = document.getElementById('submitButton');

const userNameInput = function(event) {
  event.preventDefault();
  event.stopPropagation();
  const AmountPaid = document.getElementById('AmountPaid').value;
  const threeMonthGoal = document.getElementById('threeMonthGoal').value;
  
  // 获取所有结果展示位
  const resultTip = document.getElementById('result-tip');
  const resultPrint1 = document.getElementById('result-amount-1');
  const resultPrint2 = document.getElementById('result-amount-2');

  const displayText = AmountPaid.length < 3 
    ? 'Name must contain at least 3 characters'
    : AmountPaid;

  // 统一赋值
  resultTip.textContent = displayText;
  resultPrint1.textContent = displayText;
  resultPrint2.textContent = displayText;
}

submitButton.addEventListener('click', userNameInput, false);

方法2:仅保留打印区的结果位

如果不需要在提交按钮旁显示提示,直接删除另外两个多余的id="result"标签,只保留打印区域你需要展示内容的那一个p标签即可,原有JS逻辑只需补上获取submitButton的代码就能正常运行。

表单数据留存建议

如果要留存所有表单输入值用于后续打印,可以在提交逻辑里把所有字段值存在一个全局对象中,打印时直接从对象取值填充到打印模板对应位置,不需要反复读取输入框的value属性,维护更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:16:01