Javascript 使用纯CSS进行表单输入验证
有没有任何方法可以在不使用JavaScript的情况下基于HTML元素的属性(而不是元素的属性)应用CSS类Javascript 使用纯CSS进行表单输入验证,javascript,jquery,html,css,Javascript,Jquery,Html,Css,有没有任何方法可以在不使用JavaScript的情况下基于HTML元素的属性(而不是元素的属性)应用CSS类 例如,考虑下面的输入元素: <input type="text" id="txtName" class="form-field__input" name="txtName" value=""> 当用户与上面的元素交互并输入一些文本时,其“value”属性得到更新;但“value”属性仍然为空。我们可以通过任何方式访问CSS中元素的属性吗?我知道可以使用JavaScrip
例如,考虑下面的输入元素:
<input type="text" id="txtName" class="form-field__input" name="txtName" value="">
当用户与上面的元素交互并输入一些文本时,其“value”属性得到更新;但“value”属性仍然为空。我们可以通过任何方式访问CSS中元素的属性吗?我知道可以使用JavaScript更新“value”属性,然后使用属性选择器更新样式;但是,有没有办法只使用CSS选择器来实现这一点
为了澄清,我不关心输入是否有效,我只想检查内容的可用性,如果内容存在,则应应用“any-css-rule-1”,否则应用“any-css-rule-2”。您可以在html
中使用和必需的属性<代码>:有效的
,:无效的
伪类位于css
以匹配特定的用户输入
:valid+[for=“txtName”]:之后{
内容:“有效输入”;
颜色:绿色;
}
:无效+[for=“txtName”]:之后{
内容:“无效输入”;
颜色:红色;
}
您可以通过HTML5和CSS3功能的组合来实现。以下是我的示例代码:
HTML:
<form action="#" class="contact-us-form" onsubmit="submitClick()">
<input type="text" placeholder="First Name" required>
<input type="text" placeholder="Last name">
<input type="email" placeholder="Email" required>
<input type="submit"/>
</form>
<p id="demo"></p>
.contact-us-form {
display: flex;
padding-bottom: 1.25em;
flex-direction: column;
.text-field {
margin: 0.5em;
}
.button-submit {
margin: 1em;
width: 100px;
float: right;
}
input[type="text"],
input[type="email"] {
margin: 0.5em;
height: 2em;
min-width: 125px;
border: 1px solid #eee;
border-left: 3px solid;
border-radius: 4px;
transition: border-color 0.5s ease-out;
&:optional {
border-left-color: #999;
}
&:required {
border-left-color: red;
}
&:invalid {
border-left-color: salmon;
}
}
}
JavaScript
function submitClick() {
alert("Your data has been saved");
}
这是指向在用户输入时您试图匹配的内容的链接?哪些css
规则应该在哪些条件下应用?您可以通过HTML5输入获得大量免费验证。你们有并没有尝试过这些,看看它们是否满足你们的需求?我正在尝试添加两个不同的类,基于输入框中的内容,而不使用任何JS。似乎不可能做到这一点。@Sameer不可能将.className
添加到html
document
的css
文件或使用CSSOM
中的元素中。您可以使用html
属性向用户提供有关预期输入的通知;根据正则表达式检查用户输入;根据用户输入匹配或不匹配的正则表达式模式呈现css
内容。如果用户输入与表单
元素的模式
属性处的正则表达式不匹配,并且设置了必需的
属性,而不使用javascript
,则也可以阻止提交元素。您需要使用:valid
,:在css
和pattern
属性和必需的属性的伪选择器无效。除此之外,您尝试实现的功能目前无法单独使用css
css
[att=value]
,[att*=value]
和其他css
属性选择器与html
处的属性名称和值匹配,而不是表单字段中的当前用户输入。可以在title
和placeholder
属性处向用户提供有关预期有效输入的提示。