前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >error信息显示状态下按钮按下时error不消失问题

error信息显示状态下按钮按下时error不消失问题

原创
作者头像
repick
修改2021-11-25 14:32:01
1.5K0
修改2021-11-25 14:32:01
举报
文章被收录于专栏:Salesforce

问题现象:

当画面增加一个按钮,在输入框表示error状态下,按下按钮,error信息还是没有消失,即使在按下事件中已经设置了setCustomValidity()方法,还是没有起效。

【set value】按下↓↓↓

代码语言:javascript
复制
<template>
  <lightning-card title="input demo">
      <lightning-input type="text" value={inputValue} onchange={handleChangeEvent} required label="test input">
      </lightning-input><br/>
      <lightning-button label="set value" onclick={handleSetValueClick}></lightning-button>
  </lightning-card>
</template>
代码语言:javascript
复制
import { LightningElement, track } from 'lwc';

export default class ExampleLwcInputRequired extends LightningElement {
  @track inputValue = '';

    handleChangeEvent(event) {
        this.inputValue = event.detail.value;
        if(this.template.querySelector('lightning-input').checkValidity()) {
            this.template.querySelector('lightning-input').setCustomValidity('');
            this.template.querySelector('lightning-input').reportValidity();
        }
    }
    handleSetValueClick(event) {
      this.inputValue = 'test';
      if(this.template.querySelector('lightning-input').checkValidity()) {
          this.template.querySelector('lightning-input').setCustomValidity('');
          this.template.querySelector('lightning-input').reportValidity();
      }
    }
}

解决方法:添加setTimeout方法

代码语言:javascript
复制
import { LightningElement, track } from 'lwc';

export default class ExampleLwcInputRequired extends LightningElement {
  @track inputValue = '';

    handleChangeEvent(event) {
        this.inputValue = event.detail.value;
        if(this.template.querySelector('lightning-input').checkValidity()) {
            this.template.querySelector('lightning-input').setCustomValidity('');
            this.template.querySelector('lightning-input').reportValidity();
        }
    }
    handleSetValueClick(event) {
      this.inputValue = 'test';
      window.clearTimeout(this.delayTimeout);
      this.delayTimeout = setTimeout(() => {
          if(this.template.querySelector('lightning-input').checkValidity()) {
              this.template.querySelector('lightning-input').setCustomValidity('');
              this.template.querySelector('lightning-input').reportValidity();
          }
      }, 1000);
  }
}

【set value】按下↓↓↓

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题现象:
  • 解决方法:添加setTimeout方法
    • 【set value】按下↓↓↓
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档