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

Quasar CLI项目表单提交时输入字段值为null的问题求助

问题原因

你定义的param对象是在组件初始化时创建的,此时所有ref的初始值都是空字符串。当用户在输入框中输入内容时,ref的值会更新,但param对象不会自动同步这些变化——因为它只是普通JavaScript对象,不具备响应式特性,所以提交时发送的还是初始化时的空值。

解决方法

将param对象的创建移到handleSubmit函数内部,这样每次提交表单时,都会获取当前ref的最新值:

<script>
import { defineComponent } from "vue";
import { ref } from "vue";
import emailjs from "@emailjs/browser";

export default defineComponent({
  setup() {
    const email = ref("");
    const course = ref("");
    const fname = ref("");
    const phone = ref("");

    const error = ref(null);
    const isPwd = ref(null);

    const handleSubmit = async () => {
      // 每次提交时创建param,获取最新的ref值
      const param = {
        fname: fname.value,
        email: email.value,
        course: course.value,
        phone: phone.value,
      };
      
      emailjs
        .send("service_id", "template_id", param, "public key")
        .then(
          (result) => {
            console.log("success", result.status, result.text, param);
          },
          (error) => {
            console.log("FAILED...", error.text);
          }
        );
    };

    return {
      handleSubmit,
      email,
      phone,
      error,
      isPwd,
      fname,
      course,
    };
  },
});
</script>
额外说明

如果你希望param始终与ref值保持同步,也可以使用reactive定义它:

const param = reactive({
  fname: "",
  email: "",
  course: "",
  phone: "",
});

之后在模板中直接绑定param.fname等字段,param会自动更新,提交时直接使用即可。但对于表单提交场景,第一种方法更简单直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:32:33