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

如何通过JS为空白/空值表单输入项动态应用红色placeholder伪类样式

实现方法

第一步:调整CSS规则

你当前的input::placeholder {color: red;}是全局生效的,需要改成仅当输入框带有invalid类时才触发占位符变红,替换为如下规则即可:

.invalid::placeholder {
  color: red;
}

你已有的输入框下边框变红的.invalid类规则无需修改。

第二步:补全现有JS逻辑

你当前的代码仅在校验不通过时添加invalid类,缺少校验通过时移除类的逻辑,同时原代码中邮箱校验的判断条件存在笔误(漏写.value),修改后的完整代码如下:

form.addEventListener("submit", (e) => {
  e.preventDefault(); // 阻止默认行为放最前面,避免校验出错时表单误提交
  if (nameValue.value === "" || nameValue.value == null) {
    nameError.innerText = "Please add your name!";
    inputs[1].classList.add("invalid");
  } else {
    nameError.innerText = "";
    inputs[1].classList.remove("invalid");
  }
  if (companyValue.value === "" || companyValue.value == null) {
    companyError.innerText = "Please add your companys name!";
    inputs[2].classList.add("invalid");
  } else {
    companyError.innerText = "";
    inputs[2].classList.remove("invalid");
  }
  if (titleValue.value === "" || titleValue.value == null) {
    titleError.innerText = "Please add your title!";
    inputs[3].classList.add("invalid");
  } else {
    titleError.innerText = "";
    inputs[3].classList.remove("invalid");
  }
  if (messageValue.value === "" || messageValue.value == null) {
    messageError.innerText = "Please leave a message!";
    inputs[4].classList.add("invalid");
  } else {
    messageError.innerText = "";
    inputs[4].classList.remove("invalid");
  }
  if (emailValue.value === "" || emailValue.value == null) {
    emailError.innerText = "Please add your email!";
    inputs[5].classList.add("invalid");
  } else {
    emailError.innerText = "";
    inputs[5].classList.remove("invalid");
  }
});

修改完成后即可实现需求:输入项为空/Null时,输入框下边框和占位符文字同时变红,校验通过后样式自动恢复。

可选优化

如果需要用户输入内容时实时移除错误样式,可以额外给所有输入框绑定input事件:

inputs.forEach(input => {
  input.addEventListener('input', () => {
    input.classList.remove('invalid');
  })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 23:45:01