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

表单提交后控制台未打印表单数据,代码是否存在问题?

问题原因与解决方案

你的代码无法打印表单数据的核心原因是所有<input>元素都缺少name属性。FormData对象只会收集带有name属性的表单控件的值,没有name的输入项不会被纳入FormData中,最终导致生成的JSON对象为空,控制台自然看不到有效数据。

修正步骤

给每个<input>标签添加对应的name属性,建议属性值与id保持一致(语义化且便于维护):

修正后的HTML代码

<form name="event_form" id="event_form">
  <label for="event_summary">Event Summary:</label>
  <br>
  <input id="event_summary" name="event_summary" type="text">
  <br>
  <br>
  <label for="event_location">Event Location:</label>
  <br>
  <input id="event_location" name="event_location" type="text">
  <br>
  <br>
  <label for="event_description">Event Description:</label>
  <br>
  <input id="event_description" name="event_description" type="text">
  <br>
  <br>
  <label for="start_time">Start Time:</label>
  <br>
  <input id="start_time" name="start_time" type="datetime-local">
  <br>
  <br>
  <label for="end_time">End Time:</label>
  <br>
  <input id="end_time" name="end_time" type="datetime-local">
  <br>
  <br>
  <button type="submit">Submit</button>
</form>

你的JS代码无需修改

// get form element
const formElement = document.querySelector('form#event_form')

// convert the form to JSON
const getFormJSON = (form) => {
  const data = new FormData(form);
  return Array.from(data.keys()).reduce((result, key) => {
    result[key] = data.get(key);
    return result;
  }, {});
};


// handle the form submission event, prevent default form behaviour, check validity, convert form to JSON
const handler = (event) => {
  event.preventDefault();
  const valid = formElement.reportValidity();
  if (valid) {
    const result = getFormJSON(formElement);
    console.log(result)
  }
}

formElement.addEventListener("submit", handler)

修正后,填写表单并提交,控制台就能正常打印包含所有输入值的JSON对象了。

内容的提问来源于stack exchange,提问作者displayName is undefined

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:13:29