【Salesforce】【LWC】响应式验证标准查找输入框

应用场景

在使用lwc的标准查找输入标签 lightning-input-field 中,有时候会需要验证用户的输入内容,并且根据内容进行不同的处理。如果用户的选择不符合要求,则需要清除输入的内容,并且提示用户。

*补充说明:*标准查找输入标签指 lightning-input-fieldfield-name 值为一个查找(look-up)字段。

响应式验证

怎么做到能够清除标准输入框的内容?其实很简单,在标准标签中添加上一个 value 属性,并且在js中管理这个变量。

例:

html:

<lightning-input-field variant="standard" required class="slds-size--3-of-7 slds-m-left--xx-large" value={value} onchange={valid} field-name='LOOK_UP__c'></lightning-input-field>

js:

@track value
valid(event) {
    const id = event.detail.value[0]
}

在查找输入框中,input值虽然在前端显示的是Name,但是js中取到的是这条记录的id,因此,在验证方法中,需要对id值进行验证。

Apex:

@AuraEnabled
public static Boolean valid(Id recordId) {
    LOOK_UP__c = [SELECT Id, Name, ... FROM LOOK_UP__c WHERE Id = :recordId];
    // ... some validation
    validationResult = ...;
    return validationResult
}

在js中,根据Apex返回的结果,做出相应的处理:

@track value
valid(event) {
    const id = event.detail.value[0]
    valid({recordId: id}).then(result => {
        if (!!result) {
            // valid
        } else {
            // invalid, clear the input
            this.value = ''
        }
    })
}

注意,在invalid的情况下,清除了input框的入力值,在lwc框架下,这会自动把标准输入框的内容清楚。这是对标签的value属性被清除做出的响应动作。

但是单单这样是不够的,当你第二次输入,验证失败之后,输入框的内容并不会像第一次一样被清除。这是因为第二次输入的前后,value值并没有改变,一直是第一次被赋值的 ''。因此标签并没有发现value的变化,从而不会做出响应式行为。

因此,需要在标签的 onchange 事件中,手动改变value值:

valid(event) {
    const id = event.detail.value[0]
    // set the value to input value
    this.value = id
    valid({recordId: id}).then(result => {
        if (!!result) {
            // valid
        } else {
            // invalid, clear the input
            this.value = ''
        }
    })
}

同时,因为用户可能手动清除输入框,这个情况下,不需要对空输入进行验证,所以为了避免这种情况,在调用Apex方法前,需要再加一层判断:

valid(event) {
    const id = event.detail.value[0]
    // set the value to input value
    this.value = id
    if (!!id) {
        valid({recordId: id}).then(result => {
            if (!!result) {
                // valid
            } else {
                // invalid, clear the input
                this.value = ''
            }
        })
    }
}

这样,标准的查找输入就已经被加上自定义的验证方法了,并且,根据验证结果的不同,输入框会响应式地作出清除内容等等行为。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值