ホームページ  >  記事  >  ウェブフロントエンド  >  vue と Element-plus を使用してステップバイステップのフォームとフォーム検証を実装する方法

vue と Element-plus を使用してステップバイステップのフォームとフォーム検証を実装する方法

PHPz
PHPzオリジナル
2023-07-17 22:43:432075ブラウズ

Vue と Element Plus を使用して段階的なフォームとフォーム検証を実装する方法

Web 開発では、フォームは最も一般的なユーザー インタラクション コンポーネントの 1 つです。複雑なフォームの場合、多くの場合、段階的な入力とフォーム検証機能を実行する必要があります。この記事では、Vue と Element Plus フレームワークを使用して、これら 2 つの機能を実現する方法を紹介します。

1. ステップバイステップフォーム

ステップバイステップフォームとは、大きなフォームをいくつかの小さなステップに分割することを指し、ユーザーはステップに従ってステップを入力する必要があります。 。 Vue のコンポーネント化とルーティング機能を使用して、この機能を実現できます。

まず、親コンポーネント FormStep を作成して、ステップバイステップのフォーム全体をレンダリングする必要があります。このコンポーネントでは、Vue Router を使用して、さまざまなステップ間のルーティング ジャンプを管理する必要があります。

<template>
  <div>
    <router-view></router-view>
    <el-steps :active="currentStep" align-center>
      <el-step v-for="(item, index) in steps" :key="index" :title="item.title"></el-step>
    </el-steps>
    <el-button type="primary" @click="prevStep" v-show="currentStep > 0">上一步</el-button>
    <el-button type="primary" @click="nextStep" v-show="currentStep < steps.length - 1">下一步</el-button>
    <el-button type="success" @click="submit" v-show="currentStep === steps.length - 1">提交</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentStep: 0, // 当前所在步骤
      steps: [
        { title: '步骤一', component: StepOne },
        { title: '步骤二', component: StepTwo },
        { title: '步骤三', component: StepThree }
      ]
    }
  },
  
  methods: {
    prevStep() {
      this.currentStep--
    },
    
    nextStep() {
      this.currentStep++
    },
    
    submit() {
      // 提交表单数据
    }
  },
  
  components: {
    StepOne,
    StepTwo,
    StepThree
  }
}
</script>

上記のコードでは、現在のステップのインデックス currentStep と、各ステップのタイトルと対応するコンポーネントを含む各ステップの構成ステップを含むデータ オブジェクトを定義します。

次に、各ステップのコンポーネントを定義する必要があります。 StepOne を例に挙げます。

<template>
  <div>
    <el-form>
      <el-form-item label="姓名">
        <el-input v-model="name"></el-input>
      </el-form-item>
      <el-form-item label="年龄">
        <el-input v-model="age"></el-input>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: '',
      age: ''
    }
  }
}
</script>

上記のコードでは、Element Plus のフォーム コンポーネント el-form と el-form-item を使用し、v-model 命令を使用して入力の値を比較します。データは双方向にバインドされます。

同様に、それぞれのフォーム項目を含む StepTwo コンポーネントと StepThree コンポーネントを作成できます。

次に、ルーティング設定で対応するルーティング ルールを定義する必要があります。 main.js でルーティングを構成します:

import Vue from 'vue'
import VueRouter from 'vue-router'
import FormStep from './components/FormStep'

Vue.use(VueRouter)

const routes = [
  { path: '/', component: FormStep }
]

const router = new VueRouter({
  mode: 'history',
  routes
})

new Vue({
  router
}).$mount('#app')

この時点で、段階的なフォームの構築が完了しました。ユーザーは手順に従ってフォームに入力し、「前へ」ボタンと「次へ」ボタンを使用して手順を切り替えることができます。

2. フォームの検証

実際の開発では、入力データが期待されるルールに準拠していることを確認するために、ユーザーが送信したフォーム データを検証する必要がよくあります。 Element Plus は、簡単に検証を実行できる豊富なフォーム検証方法とコンポーネントを提供します。

まず、フォーム コンポーネントで検証ルールを定義する必要があります。 StepOne を例に挙げます。

<template>
  <div>
    <el-form ref="form" :model="form" :rules="rules">
      <el-form-item label="姓名" prop="name" :rules="[{ required: true, message: '请输入姓名' }]">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="年龄" prop="age">
        <el-input v-model.number="form.age"></el-input>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      form: {
        name: '',
        age: null
      },
      rules: {
        name: [
          { required: true, message: '请输入姓名', trigger: 'blur' }
        ],
        age: [
          { type: 'number', required: true, message: '请输入年龄', trigger: 'blur' },
          { type: 'number', min: 18, max: 60, message: '年龄必须在18到60之间', trigger: 'blur' }
        ]
      }
    }
  },
  
  methods: {
    validateForm() {
      return new Promise((resolve, reject) => {
        this.$refs.form.validate(valid => {
          if (valid) {
            resolve()
          } else {
            reject()
          }
        })
      })
    }
  }
}
</script>

上記のコードでは、el-form-item の prop 属性を通じてフィールド名を設定し、各フィールドに対応する検証ルールを定義します。フォーム全体は $refs.form.validate メソッドを通じて検証されます。

次に、フォーム検証のために送信ボタンのクリック イベントで validateForm メソッドを呼び出す必要があります。

<el-button type="success" @click="submit" v-show="currentStep === steps.length - 1">提交</el-button>
methods: {
  async submit() {
    try {
      await this.$refs.form.validateForm()
      // 校验通过,提交表单数据
    } catch (error) {
      // 校验未通过,不提交表单数据
    }
  }
}

上記のコードを通じて、フォームを送信する前にフォーム データを検証できます。 、検証に合格した場合にのみ送信されます。

概要

この記事では、Vue と Element Plus を使用してステップバイステップのフォームとフォーム検証機能を実装する方法を紹介します。 Vue Router とコンポーネント化の考え方を使用することで、ステップバイステップのフォーム レイアウトとジャンプを実装できます。 Element Plusのフォームコンポーネントと検証メソッドを使用すると、フォームデータを簡単に検証できます。

上記は、Vue と Element Plus を使用してステップバイステップのフォームとフォーム検証を実装する方法です。

以上がvue と Element-plus を使用してステップバイステップのフォームとフォーム検証を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。