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

Svelte中如何为对接Firebase的提交表单添加非空校验

Svelte表单非空校验实现步骤

直接按下面修改代码即可,不需要额外安装依赖:

  1. 首先修改<script>块内容,新增错误状态变量,在提交逻辑前加入非空判断
<script>
  // 原有引入逻辑保持不变
  import tilt from "svelte-tilt";
  import { ConfettiExplosion } from "svelte-confetti-explosion";
  import { clickOutside } from "./clickOutside.js";
  import { Router, Route, Link } from "svelte-routing";
  import Privacy from "../routes/privacy.svelte";
  import { db } from "../firebase/config";
  import { collection, doc, setDoc } from "firebase/firestore";

  // 修复原代码语法错误:第二个Test Data的引号嵌套问题
  let data = [
    "Test Data","Test Data"
  ];
  let isVisible = false;
  let openModel = false;
  // 新增:表单错误提示响应变量
  let formError = "";

  const toggleModel = () => {
    openModel = !openModel;
    if (openModel === true) {
      isVisible = true;
    }
  };

  let userName = "";
  let userMail = "";

  let addData = async () => {
    // 每次提交先清空历史错误提示
    formError = "";

    // 非空校验,自动过滤首尾空格
    if (!userName.trim()) {
      formError = "请输入姓名";
      return;
    }
    if (!userMail.trim()) {
      formError = "请输入邮箱";
      return;
    }

    // 校验通过才执行Firebase提交
    const Data = collection(db, "waitlist users");
    try {
      await setDoc(doc(Data), {
        name: userName.trim(),
        email: userMail.trim(),
      });
      // 提交成功清空输入框
      userName = "";
      userMail = "";
      toggleModel();
    } catch (error) {
      formError = "提交失败,请稍后再试";
      console.log(error);
    }
  };
</script>
  1. 在表单的提交按钮上方加入错误提示渲染块,找到原代码里包裹Join按钮的<div class=" flex justify-end">标签,在它前面插入下面这段代码:
<!-- 错误提示展示区域 -->
{#if formError}
  <p class="text-red-400 text-sm text-left mt-3 mb-1">* {formError}</p>
{/if}

补充说明

  • 校验逻辑加了.trim()处理,能拦住用户只输入空格的无效提交
  • 原代码里"Test"Data"存在引号未闭合的语法错误,上述代码已经直接修复,否则项目启动会报编译错误
  • 输入框上原有的required原生属性可以删掉,自定义校验逻辑已经完全覆盖非空判断需求,不会和原生校验产生冲突
  • 提交失败(比如网络异常、Firebase权限问题)时也会在同一位置展示错误提示,不需要额外加弹窗组件

内容的提问来源于stack exchange,提问作者Ali Akbar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:18:21