点击按钮将输入框placeholder文本变为红色,现有JS代码不生效求解决
问题原因
- 事件绑定错误:代码尝试给id为
url-30的元素绑定submit事件,但你的HTML里form标签没有设置该id,事件监听根本不生效 - 表单元素获取错误:尝试获取id为
url的表单构造FormData,但HTML中form无对应id,无法正确读取表单字段值 - 表单字段名不匹配:input的name属性为
url,但代码用formData.get("urlName")读取字段,永远会拿到空值 - 核心错误:placeholder是DOM元素的属性值(字符串类型),本身不存在style属性,直接写
placeholder.style.color属于无效语法,修改placeholder颜色必须通过CSS的::placeholder伪元素实现
解决方案
首先新增CSS样式定义错误状态:
/* 定义输入框错误状态的样式 */ .input-error::placeholder { color: red; } .input-error { border-color: red; }
修正HTML代码(给form加id、修正submit输入框的错误闭合写法):
<form id="url-form"> <input id="red-border-error" class="test-form-1" type="text" name="url" placeholder="yourstorehere.com"> <input class="test-button-1" type="submit" value="BUTTON"> </form>
修正后的JS代码:
document.getElementById("url-form").addEventListener("submit", (event) => { event.preventDefault() const inputEl = document.getElementById("red-border-error") const formData = new FormData(event.target) // 用正确的字段名读取输入值并做非空校验 if (formData.get("url").trim() === "") { inputEl.placeholder = "Type your store URL here" // 加上错误样式类,同时触发边框和placeholder变红 inputEl.classList.add("input-error") return } // 输入非空时移除错误样式 inputEl.classList.remove("input-error") // 后续正常提交逻辑可在此处补充 })
内容的提问来源于stack exchange,提问作者frankieseattle
相关产品推荐
相关产品推荐

