gpt4 book ai didi

javascript - HTML5 customElements - 添加伪类

转载 作者:行者123 更新时间:2023-11-28 00:48:02 25 4
gpt4 key购买 nike

我正在开发一个自定义 HTML 类,它可以用作一种附加类型的表单,支持与 [name][value] 匹配的任何元素属性。

但是,当扩展一个类时,我发现我无法让伪选择:invalid 工作。

class HTMLInlineInputElement extends HTMLElement{
constructor(){
super();
this.addEventListener('input', function(event){
this.value = this.innerHTML;
})
}
connectedCallback(){}

get name(){
return this.getAttribute('name');
}
set name(value){
return this.setAttribute('name', value);
}
get value(){
return this.getAttribute('value');
}
set value(value){
return this.setAttribute('value', value);
}
get valid(){
return this.validity.valid;
}
set valid(value){
return this.validity.valid = value;
}
checkValidity(){
if( this.hasAttribute('required') && this.value == null || this.value.length == 0 ){
console.log('req');
this.valid = false;
} else if( this.hasAttribute('pattern') && this.value.match( this.getAttribute('pattern') ) ){
console.log('patt');
this.valid = false;
}
}
}

if( typeof customElements !== 'undefined' ){
customElements.define('inline-form', HTMLInlineFormElement);
customElements.define('inline-input', HTMLInlineInputElement);
} else {
document.createElement('inline-form', HTMLInlineFormElement);
document.createElement('inline-input', HTMLInlineInputElement);
}

简而言之:我想将 HTMLElement.invalid = true; 功能添加到我的类中,以便我可以在 CSS 中使用 :invalid 选择器。我该怎么做才能将 :is-selectors 添加到我的新类(class)中?

最佳答案

从我读到的所有内容来看,您不能在 CSS 中为自定义元素使用 :invalid 选择器。但是您可以根据有效性设置 invalid 属性,然后改用 [invalid] 选择器。

尝试将您的代码更改为以下内容:

get valid(){
return !this.hasAttribute('invalid');
}
set valid(value){
if (value) {
this.removeAttribute('invalid');
}
else {
this.setAttribute('invalid'), '');
}
}

关于javascript - HTML5 customElements - 添加伪类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49309226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com