javascript - 如何仅在更改后验证输入?

标签 javascript html forms validation input

这可能是一个相当愚蠢的问题,但我找不到一个简单的解决方案(比如特殊的 HTML5 属性)。

例如,我有一个简单的表单,其中启用了电子邮件字段的验证:

<form>
    <input required type="email" placeholder="email@gmail.com"></input>
</form>

以及 :valid, :invalid 伪类的一些样式:

input:valid {
  border: 1px solid green;
}
input:invalid {
  border: 1px solid red;
}

因此,当我使用此表单打开页面时,输入已经带有红色边框,因为它是空的。问题是 - 如何仅在用户更改后才启用验证?

最佳答案

您可以使用onchange event ,参见:

<!-- added a ID to get it easier later -->
<input required id="myInput" type="email" placehodler="email@gmail.com"></input>

在你的CSS中,使用类来设置你的样式:

input.valid {
  border: 1px solid green;
}
input.invalid {
  border: 1px solid red;
}

在你的 JavaScript 中:

document.getElementById('myInput').onchange = function(){
     // validation code here

     this.classList.add('valid') // if validation is true
     this.classList.add('invalid') // if validation is false
}

关于javascript - 如何仅在更改后验证输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286388/

相关文章:

javascript - 如何更改来自 'class' 属性的 CSS 参数?

jQuery 查找前面的非祖先元素

python - Tornado 的 ORM

css - 如何在 Mac 上设置样式选择标签

html - 仅在 IE 中位置不正确

PHP 数组和 HTML 表单下拉列表

javascript - postman :如何在测试中迭代我的 JSON 文件?

javascript - Cordova - 从 URL 下载图像到图片库

Javascript 检查窗口是否由脚本打开

javascript - 如何更改 HTML 元素并重定向到另一个页面