当前位置: 首页 > news >正文

【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 = ''
            }
        })
    }
}

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

相关文章:

  • 最长递增子序列问题(LIS) 动态规划 JavaScript
  • 位屏蔽(Bitmasking)中屏蔽字赋值语句 mask | (1 << j) 的解释
  • 【Java to Architect】synchronized保证内存可见性 demo的另一种解法
  • 利用位屏蔽和动态规划解决最小代价任务分配问题 Bitmasking Dynamic Programming
  • 算法:回溯法(backtracking)解决寻找给定字符串的所有排序(permutations)问题
  • 算法: 动态规划 寻找2D矩阵中到达某一坐标的最小代价路径
  • 算法:动态规划 寻找2D矩阵中到达某一坐标的可能路径总数
  • 算法:动态规划 寻找2D矩阵中到达某一坐标的可能路径总数进阶版(添加路障)
  • 算法: 动态规划,二维矩阵代价最值进阶版 两条行进路径,一次相交,求解最大代价
  • Programming Languages And Lambda calculi 1.1 定义集合
  • 算法: 动态规划 编辑距离 Edit Distance / Levenshtein Distance
  • 【Salesforce】【Apex】Trigger中不通过soql查询记录类型的开发名称
  • 【Programming Languages And Lambda calculi】 1.2 ~ 1.3 关系、赋值与关系
  • 【Programming Languages And Lambda calculi】 1.4 有向赋值
  • 【算法】 动态规划 基础题库 1-7 python实现
  • 【Amaple教程】5. 插件
  • Git初体验
  • JAVA并发编程--1.基础概念
  • js中的正则表达式入门
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • pdf文件如何在线转换为jpg图片
  • RxJS: 简单入门
  • spring security oauth2 password授权模式
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于游标的分页接口实现
  • 模型微调
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端面试之CSS3新特性
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用API自动生成工具优化前端工作流
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • #{} 和 ${}区别
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (0)Nginx 功能特性
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)STL算法之元素计数
  • (C语言)fgets与fputs函数详解
  • (二)JAVA使用POI操作excel
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .describe() python_Python-Win32com-Excel
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core 中的路径问题
  • .Net IE10 _doPostBack 未定义
  • .NET下的多线程编程—1-线程机制概述
  • .pyc文件是什么?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/skel 目录作用
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...