点击“检查”按钮后,我想在无效输入元素周围做一个红色边框。问题是我不能使用框架或插件,只能使用HTML,CSS和JavaScript 。
我试图在网上搜索一些小时,我发现的只是使用:valid
和:invalid
伪类。它们工作正常,但我只想在点击“检查”按钮后显示红色边框。
这是我的代码
input:invalid {
border: 1px solid red;
}
<html>
<head>
<title>Invalid Form Test</title>
</head>
<body>
<div>
<form id="login" method="post">
<div>
<label for="username">Username</label>
<input type="text" id="username" placeholder="Username" name="username" required />
</div>
<div>
<label for="password">Password</label>
<input type="password" id="password" placeholder="Password" name="password" required />
</div>
<div>
<button id="check-btn">Check</button>
</div>
</form>
</div>
</body>
</html>
如果可能的话,我还想删除默认的浏览器工具提示和红色轮廓(即我只想要无效元素的样式)。
提前感谢您的帮助!
答案 0 :(得分:1)
这是一种使用invalid
事件来防止工具提示出现的方法,并在触发无效事件后向表单添加一个类。修改CSS,我做了它,只有当这个类存在时才显示红色边框。
这是一个IE 10 + / Edge 14+解决方案。
document.getElementById('login').addEventListener( "invalid", function( event ) {
this.classList.add('check');
event.preventDefault();
}, true);
.check input:invalid {
border-color: red;
}
<html>
<head>
<title>Invalid Form Test</title>
</head>
<body>
<div>
<form id="login" method="post">
<div>
<label for="username">Username</label>
<input type="text" id="username" placeholder="Username" name="username" required />
</div>
<div>
<label for="password">Password</label>
<input type="password" id="password" placeholder="Password" name="password" required />
</div>
<div>
<button id="check-btn">Check</button>
</div>
</form>
</div>
</body>
</html>