我试图在一个用Vue构建的网站上添加一个带有简单验证的联系人表单.js使用Vuetify.js示例.我是个新手,所以我不确定它应该如何在Vue组件中实现.


我想实现一个简单的客户端表单验证,并使其与https://getform.org/个表单一起工作.


更新:

代码|联系.vue

(摘自Vuetify.js表单example)

<v-form v-model="valid">
      <v-text-field
        label="Name"
        v-model="name"
        :rules="nameRules"
        :counter="10"
        required
        name="Name"
      ></v-text-field>

      <v-text-field
        label="E-mail"
        v-model="email"
        :rules="emailRules"
        required
        name="Email"
      ></v-text-field>

      <v-btn
          @click="submit"
          :disabled="!valid"
      >submit</v-btn>
  </v-form>

  <form method="post" action="https://www.getform.org/f/[MY_ID_HERE]" id="nativeForm"></form>

playbook

<script>
export default {
  name: 'contact',

  data () {
    return {
      snackbar: true, 
      valid: false,
        name: '',
        nameRules: [
          (v) => !!v || 'Name is required',
          (v) => v.length <= 10 || 'Name must be less than 10 characters'
        ],
        email: '',
        emailRules: [
          (v) => !!v || 'E-mail is required',
          (v) => /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
        ]
      }
    },
    methods: {
      submit() {
        nativeForm.submit()
      }
    }
  }
</script>

推荐答案

只需使用一个表单即可实现:

<v-form method="post" action="https://www.getform.org/f/[YOUR-FORM-ID]" id="nativeForm" v-model="valid">

      <v-text-field
        label="Name"
        v-model="name"
        :rules="nameRules"
        :counter="10"
        required
        name="message"
      ></v-text-field>
      <v-text-field
        label="E-mail"
        v-model="email"
        :rules="emailRules"
        required
        name="mail"
      ></v-text-field>

      <v-btn @click="submit" :disabled="!valid">submit</v-btn>
 </v-form>

playbook

 < playbook >
    export default {
      name: 'contact',

      data () {
         return { 
            valid: false,
            name: '',
            nameRules: [
              (v) => !!v || 'Name is required',
              (v) => v.length <= 10 || 'Name must be less than 10 characters'
            ],
            email: '',
            emailRules: [
              (v) => !!v || 'E-mail is required',
              (v) => /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(v) || 'E-mail must be valid'
            ]
          }
        },
        methods: {
          submit() {
            nativeForm.submit()
          }
        }
      }
  </ playbook >

别忘了:

添加name个属性.Getform需要它们.

Vue.js相关问答推荐

检测Vue3/Vue-test-utils中的Vuex还原/Mutations

为什么元素会从Vue 3中的TransitionGroup左上角出现?

如何在Vue3中使用vuechartjs 5.2从父组件更新图表

将 v-calendar 与以时间和日期格式出现的事件一起使用

使用 Nuxt 动态获取文件夹中的图像路径

JSDoc 单文件 Vue 组件

使用 Vue.js 和 Jest 进行 URL 重定向测试

全局方法和实例方法有什么区别?

如何创建 vuetify 工具栏链接下拉菜单?

如何像 React 中的 {...props} 一样在 Vue 中解构 props?

Vuejs 2,VUEX,编辑数据时的数据绑定

vue-router的router-link实际刷新?

Jest错误找不到模块....

如何从组件内的单点捕获 vuejs 错误

emit更新数组不起作用

在 Vuejs 中放置 firebase.auth().onAuthStateChanged() 的位置

我们可以像在 Angular 中一样创建 Vue.js 组件时将 HTML、JS 和 CSS 文件分开吗?

Vue过滤器应该如何使用typescript绑定?

vuejs 中缺少 webpack 配置

Vuex 模块Mutations