首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改HTML的值不会正确地更改该值吗?

更改HTML的值不会正确地更改该值吗?
EN

Stack Overflow用户
提问于 2021-03-03 08:47:53
回答 2查看 46关注 0票数 1

当我改变一个元素的值时,里面的html改变了,但是它不被识别,因为它仍然显示field是必需的。我尝试将elements required属性更改为false,但也没有任何帮助。Image

代码语言:javascript
复制
let element = document.getElementById('mat-input-2')

element.focus()
element.value = "test@gmail.com"
element.required = false;
element.blur();
代码语言:javascript
复制
<input _ngcontent-sde-c17="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" data-test="email" formcontrolname="email" matinput="" placeholder="Email" type="email" id="mat-input-2" aria-invalid="true" aria-required="true" required="" aria-describedby="mat-error-3">
EN

回答 2

Stack Overflow用户

发布于 2021-03-03 09:54:51

required是一个布尔属性。如果它存在于HTML element中,那么它包含任何值都无关紧要,甚至false值也是如此,那么它就被视为true值。因此,您必须完全删除attribute。您可以使用removeAttributetoggleAttribute

您可以看到所有三个setAttributeremoveAttributetoggleAttribute的示例

代码语言:javascript
复制
const element = document.querySelector("input")
const btnSetAttribute = document.querySelector('#btnSetAttribute');
const btnRemoveAttribute = document.querySelector('#btnRemoveAttribute');
const btnToggleAttribute = document.querySelector('#btnToggleAttribute');

btnSetAttribute.addEventListener('click', e => {
    if( !element.disabled ){
        element.setAttribute('disabled', true);
    } else {
        element.setAttribute('disabled', false);
    }
})

btnRemoveAttribute.addEventListener('click', e => {
    if( !element.disabled ){
        element.setAttribute('disabled', true);
    } else {
        element.removeAttribute('disabled');
    }
})

btnToggleAttribute.addEventListener('click', e => {
    element.toggleAttribute('disabled');
})
代码语言:javascript
复制
<input type="text" placeholder="click button to disable"/>
<br />
<button id="btnSetAttribute"> disable using setAttribute </button>
<button id="btnRemoveAttribute"> disable using removeAttribute </button>
<button id="btnToggleAttribute"> disable using toggleAttribute </button>

您应该使用removeAttributetoggleAttribute

代码语言:javascript
复制
const input = document.querySelector('input');

let element = document.getElementById('mat-input-2')

element.focus()
element.value = "test@gmail.com"
element.toggleAttribute('required');
element.toggleAttribute('aria-required');
element.blur();
代码语言:javascript
复制
<input _ngcontent-sde-c17="" class="mat-input-element mat-form-field-autofill-control cdk-text-field-autofill-monitored ng-pristine ng-invalid ng-touched" data-test="email" formcontrolname="email" matinput="" placeholder="Email" type="email" id="mat-input-2" aria-invalid="true" aria-required="true" required="" aria-describedby="mat-error-3">

票数 1
EN

Stack Overflow用户

发布于 2021-03-03 09:01:07

要删除的

代码语言:javascript
复制
element.removeAttribute('required');
element.setAttribute('aria-required', 'false');

要添加的

代码语言:javascript
复制
element.setAttribute('required', '');
element.setAttribute('aria-required', 'true');

如果您在必填字段中重复切换true/false,最好为该操作创建一个函数。

这里就是一个例子:

代码语言:javascript
复制
<input id="inputElem" type="text" aria-required="true" required>
代码语言:javascript
复制
const inputElem = document.querySelector('#inputElem');

function toggleInputRequired(element, status = true) {
  if (status) {
    element.setAttribute('required', '');
    element.setAttribute('aria-required', 'true');
  } else {
    element.removeAttribute('required');
    element.setAttribute('aria-required', 'false');
  }
}

toggleInputRequired(inputElem, false); // Remove required
toggleInputRequired(inputElem); // Add required
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66449178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档