为什么表单提交时获取到的input输入值为空字符串?
问题根因
输入框取值逻辑执行时机错误:你在脚本初始化阶段就读取了三个输入框的value,此时页面刚完成加载,用户未进行任何输入操作,三个变量存储的是输入框初始的空字符串。后续触发表单提交事件时,你打印的是脚本初始化时缓存的旧值,并非提交时刻输入框的实时内容。
解决方案
将取值逻辑移入表单提交的事件回调函数中,每次触发表单提交时再读取输入框的最新值即可。你也可以提前存储DOM元素引用,避免每次触发事件都重复查询DOM,优化性能。
修正后的代码
const formulario = document.querySelector("form"); // 仅提前存储DOM元素引用,不读取value const nombreInput = document.querySelector("#names"); const emailInput = document.querySelector("#email"); const passwordInput = document.querySelector("#password"); let correctData = []; let errors = []; formulario.addEventListener("submit", (e) => { e.preventDefault(); // 提交时读取最新的输入值 const nombre = nombreInput.value; const email = emailInput.value; const password = passwordInput.value; console.log(nombre); console.log(email); console.log(password); });
内容的提问来源于stack exchange,提问作者Tina
相关产品推荐
相关产品推荐

