elementUI中validateField对多个部分表单字段进行校验时多次回调问题的完美解决方案

在网上看到了他人的解决方案,发现他们的方案是不对的,他们只是单单解决了验证错误,却没有解决验证正确的情况下。

1.首先,我们得知道,使用validateField部分校验数组的时候,数组有几位,就会回调几次。当也就是空的时候,表示验证通过,回调返回为“ ”,所以就是,你校验几个规则,就会返回几个结果,如果通过就为“”(空)。

2.我们只需要定义一个数组

const validateFieldList= []

3.每当校验,就像数组中push该message值

validateFieldList.push(errorMsg) 

4.然后我们需要判断每个item是否为空,且该数组的长度是否等于你要校验值的个数。

if ( validateFieldList.length == 2 &&validateFieldList.every((item) => item === ""))

//这里的2为你要校验值的个数

//网上的其他方法错就错在这里,他们没有校验数组长度,从而第一次validateFieldList的每一项item就等于“”,从而并没有起到该有的效果。

5.最后贴上完整:

//这是登录按钮事件
    submitLoginForm(formName) {
      console.log("点击了登录")
      let validateFieldList= []
      this.$refs[formName].validateField(
        ["email", "password"],
        async (errorMsg) => {
          if (!errorMsg) {
            validateFieldList.push(errorMsg)
            if (validateFieldList.length == 2 && validateFieldList.every((item) => item === "")
            ) {
              // 之后的操作
              
            }
          } else {
            console.log("error submit!!")
            return false
          }
        }
      )
    },


                        
原文链接:https://blog.youkuaiyun.com/CHENC0518/article/details/124353155

在E9流程表单开发中,正确使用前端API进行数据校验和操作是保证表单流程顺利进行的关键。首先,开发者需要利用`WfForm.registerCheckEvent`方法注册一个校验事件,确保在数据保存前执行必要的验证逻辑。下面是一个详细的步骤和代码示例: 参考资源链接:[E9流程表单前端API:操作类型与事件校验](https://wenku.youkuaiyun.com/doc/29wxmi0z3x) 1. **确定操作类型**:首先需要明确操作类型是保存(`WfForm.OPER_SAVE`),这是触发校验事件的前提。 2. **注册校验事件**:使用`WfForm.registerCheckEvent`方法注册一个异步校验事件。在该事件中,你可以调用一个异步的Ajax请求或执行一些同步逻辑来验证数据的有效性。 3. **执行异步校验**:在校验事件的回调函数中,你需要编写校验逻辑。如果校验失败,则通过`callback(false)`来阻止表单的保存操作,并提供相应的错误信息。如果校验通过,则通过`callback()`来继续表单的保存操作。 4. **获取字段值并校验**:通过`WfForm.getFieldValue`方法获取需要校验字段值。例如,如果需要校验字段ID是`field27495`,则可以使用`WfForm.getFieldValue('#field27495')`来获取该字段的值,并执行校验逻辑。 5. **执行保存操作**:一旦所有校验都通过,就可以调用`WfForm.save()`方法来保存表单数据。 以下是具体的代码示例: ```javascript // 注册保存前的校验事件 WfForm.registerCheckEvent(WfForm.OPER_SAVE, function(callback) { var fieldValue = WfForm.getFieldValue('#field27495'); // 校验字段值,如果校验失败,返回错误信息 if (!validateField(fieldValue)) { callback('校验失败,请检查字段值!'); } else { // 校验通过,继续保存操作 callback(); } }); // 保存表单数据的函数 function saveForm() { WfForm.save(); } // 页面加载完成后绑定保存按钮的点击事件 jQuery(document).ready(function(){ WfForm.bindButton('保存按钮的标识', saveForm); }); ``` 通过上述步骤,你可以有效地使用E9流程表单前端API来完成表单字段的异步校验,并在数据校验通过后执行保存操作。这种操作方式不仅可以提高表单处理的效率,还可以保证数据的安全性和准确性。为了更深入地理解和掌握E9流程表单前端API的使用,建议查阅《E9流程表单前端API:操作类型与事件校验》这份资料,它将为你提供更为详尽的API功能介绍和使用场景,帮助你更好地进行表单开发和优化。 参考资源链接:[E9流程表单前端API:操作类型与事件校验](https://wenku.youkuaiyun.com/doc/29wxmi0z3x)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值