【发布时间】:2021-02-14 05:49:30
【问题描述】:
有没有什么方法可以在不使用 JavaScript 的情况下基于 HTML 元素的属性(不是基于元素的属性)应用 CSS 类?
例如,考虑下面的输入元素:
<input type="text" id="txtName" class="form-field__input" name="txtName" value="">
当用户与上面的元素交互并输入一些文本时,它的“value”属性被更新;但“值”属性仍然为空。我们可以通过任何方式访问 CSS 中元素的属性吗?我知道可以使用 JavaScript 更新“值”属性,然后使用属性选择器更新样式;但是有没有办法只使用 CSS 选择器来实现这一点?
澄清一下,我不关心输入是否有效,我只想检查内容的可用性,如果内容存在,则应应用“any-css-rule-1”,否则“ any-css-rule-2"。
【问题讨论】:
-
你想在用户输入时匹配什么?哪些
css规则应在哪些条件下应用? -
您可以通过 HTML5 输入获得大量免费验证。您是否尝试过这些,看看它们是否满足您的需求?
-
我正在尝试根据输入框中内容的存在添加两个不同的类,而不使用任何 JS。似乎无法做到这一点。
-
@Sameer 无法将
.className添加到htmldocumentcss文件或使用CSSOM的元素。您可以使用html属性向用户提供有关预期输入的通知;根据正则表达式检查用户输入;根据用户输入匹配或不匹配正则表达式模式呈现css内容。如果用户输入与form元素的pattern属性处的正则表达式不匹配并且设置了required属性,则也可以阻止提交<form>元素,而不使用javascript。 -
您需要在
css和pattern属性中使用:valid、:invalid伪选择器,在html属性中使用required属性。否则,不,您尝试实现的功能目前无法单独使用css。css[att=value]、[att*=value]和其他css属性选择器匹配html的属性名称和值,而不是表单字段中的当前用户输入。
标签: javascript jquery html css