You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wix Velo表单入库前查重:免费计划正常基础计划3下拉框校验失效求助

Wix Velo 基础计划表单校验失效修复方案

核心故障原因

  • 定价计划名称匹配误差:getPricingPlans返回的计划名称和后台配置的BASIC计划名称完全一致才会触发对应逻辑,大小写、空格、后缀字符不匹配都会导致基础计划的代码块不执行
  • 事件绑定时机错位:onBeforeSave事件绑定在getPricingPlans异步回调中执行,若dataset加载完成早于异步回调返回,事件绑定会失效
  • 数据集配置错误:dataset2未正确绑定对应集合、提交按钮未关联dataset2提交操作、集合权限不足都会导致校验逻辑不触发

修复后代码

import wixData from 'wix-data';
import wixUsers from 'wix-users';

let currentPlanName = ""; // 全局存储当前用户的计划名称

$w.onReady(function () {
    // 提前绑定两个dataset的校验事件,根据当前计划决定是否生效
    bindFreePlanValidation();
    bindBasicPlanValidation();

    console.log("Ready")
    let user = wixUsers.currentUser;

    user.getPricingPlans() 
    .then ((pricingPlans) => {
        let firstPlan = pricingPlans[0];
        currentPlanName = firstPlan.name;
 
        if (currentPlanName == '7 DAY FREE TRIAL $0'){  
            $w('#text30').show();
            $w("#text31").show();
            $w('#dropdown1').show();
            $w('#emailInput').show();
            $w('#button1').show();
        } else if(currentPlanName == 'BASIC'){
            $w('#text30').show();
            $w("#text31").show();
            $w('#dropdown2').show();
            $w('#dropdown3').show();
            $w('#dropdown4').show();
            $w('#emailInput2').show();
            $w('#button2').show();
        }  
    }); 
});

// 免费计划校验逻辑
function bindFreePlanValidation() {
    $w("#dataset1").onBeforeSave(async() => {
        // 不是免费计划直接跳过校验
        if(currentPlanName !== '7 DAY FREE TRIAL $0') return true;

        let checkEmailFreeOk = await checkEmailFree();
        let fieldCheck = $w("#dropdown1").value;

        if(checkEmailFreeOk === false){
            $w("#text32").text = "An error occurred. You have already submitted this form";
            return false     
        }
        if(fieldCheck === ""){
            $w("#text32").text = "An error occurred. Please select your region of interest";
            return false       
        }
        return true;
    })
}

async function checkEmailFree(){
    let flagFree = true
    await wixData.query('RegionSelectionQuizFree')
    .eq('email', $w("#emailInput").value)
    .find()
    .then((result)=>{
        if(result.items.length > 0) flagFree = false
    })
    return flagFree
}

// 基础计划校验逻辑
function bindBasicPlanValidation() {
    $w("#dataset2").onBeforeSave(async() => {
        // 不是基础计划直接跳过校验
        if(currentPlanName !== 'BASIC') return true;

        let checkEmailBasicOk = await checkEmailBasic();
        let region1 = $w("#dropdown2").value;
        let region2 = $w("#dropdown3").value;
        let region3 = $w("#dropdown4").value;

        const regions = new Set([region1, region2, region3]);             
        regions.delete(""); 
       
        if(checkEmailBasicOk === false){
            $w("#text34").text = "An error occurred. You have already submitted this form";
            return false     
        } 
        if (regions.size !== 3) {
            $w("#text34").text = "An error occurred. Please select 3 different regions of interest";
            return false             
        }
        return true;
    })
}

async function checkEmailBasic(){
    let flagBasic = true
    await wixData.query('RegionSelectionQuizBasic')
    .eq('email', $w("#emailInput2").value)
    .find()
    .then((result)=>{
        if(result.items.length > 0) flagBasic = false
    })
    return flagBasic
}

必做检查项

  • 进入Wix后台定价计划页面,确认基础计划的名称完全是BASIC,无额外空格、大小写错误或价格后缀
  • 确认dataset2的绑定集合为RegionSelectionQuizBasic,提交按钮button2的点击事件绑定为dataset2的「保存」操作
  • 确认RegionSelectionQuizBasic集合的权限设置为「会员可创建内容」,否则提交操作会被拦截不会触发校验事件
  • 确认三个下拉框的默认空值为字符串类型的空,而非占位符文本

内容的提问来源于stack exchange,提问作者Sabrina Angelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:06:03