当前位置:首页 > VUE

vue实现弹出表单

2026-01-16 07:21:46VUE

使用 Vue 实现弹出表单

基础实现(基于 v-if 和 v-show)

通过 v-ifv-show 控制表单的显示与隐藏,适合简单场景。

<template>
  <div>
    <button @click="showForm = true">打开表单</button>
    <div v-if="showForm" class="modal">
      <form @submit.prevent="handleSubmit">
        <input v-model="formData.name" placeholder="姓名">
        <button type="submit">提交</button>
        <button @click="showForm = false">关闭</button>
      </form>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      showForm: false,
      formData: { name: '' }
    };
  },
  methods: {
    handleSubmit() {
      console.log('提交数据:', this.formData);
      this.showForm = false;
    }
  }
};
</script>

<style>
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  padding: 20px;
  border: 1px solid #ccc;
}
</style>

使用 Vue 组件封装

将弹出表单封装为可复用的组件,适合复杂场景。

vue实现弹出表单

<!-- PopupForm.vue -->
<template>
  <div v-if="visible" class="popup-form">
    <form @submit.prevent="submit">
      <slot></slot>
      <button type="submit">提交</button>
      <button @click="close">关闭</button>
    </form>
  </div>
</template>

<script>
export default {
  props: {
    visible: Boolean
  },
  methods: {
    submit() {
      this.$emit('submit');
    },
    close() {
      this.$emit('update:visible', false);
    }
  }
};
</script>

<style>
.popup-form {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  padding: 20px;
  border: 1px solid #ccc;
}
</style>

调用封装组件

在父组件中调用封装好的弹出表单。

vue实现弹出表单

<template>
  <div>
    <button @click="showPopup = true">打开表单</button>
    <PopupForm :visible.sync="showPopup" @submit="handleSubmit">
      <input v-model="formData.name" placeholder="姓名">
    </PopupForm>
  </div>
</template>

<script>
import PopupForm from './PopupForm.vue';

export default {
  components: { PopupForm },
  data() {
    return {
      showPopup: false,
      formData: { name: '' }
    };
  },
  methods: {
    handleSubmit() {
      console.log('提交数据:', this.formData);
    }
  }
};
</script>

使用第三方库(如 Element UI)

借助 UI 库快速实现弹窗表单,适合企业级应用。

<template>
  <div>
    <el-button @click="dialogVisible = true">打开表单</el-button>
    <el-dialog :visible.sync="dialogVisible" title="表单">
      <el-form :model="formData">
        <el-form-item label="姓名">
          <el-input v-model="formData.name"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer">
        <el-button @click="dialogVisible = false">取消</el-button>
        <el-button @click="handleSubmit">提交</el-button>
      </span>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialogVisible: false,
      formData: { name: '' }
    };
  },
  methods: {
    handleSubmit() {
      console.log('提交数据:', this.formData);
      this.dialogVisible = false;
    }
  }
};
</script>

动画效果增强

通过 Vue 的过渡动画(Transition)提升用户体验。

<template>
  <div>
    <button @click="showForm = true">打开表单</button>
    <transition name="fade">
      <div v-if="showForm" class="modal">
        <form @submit.prevent="handleSubmit">
          <input v-model="formData.name" placeholder="姓名">
          <button type="submit">提交</button>
          <button @click="showForm = false">关闭</button>
        </form>
      </div>
    </transition>
  </div>
</template>

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
.modal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  padding: 20px;
  border: 1px solid #ccc;
}
</style>

标签: 弹出表单
分享给朋友:

相关文章

css表格表单制作

css表格表单制作

CSS表格制作 使用CSS创建表格主要涉及<table>标签及其子元素的样式控制。以下是一个基础示例: <table class="styled-table"> <…

vue 实现表单

vue 实现表单

Vue 表单实现方法 使用 Vue 实现表单可以通过多种方式,包括基础表单绑定、表单验证以及第三方库集成。以下是常见的实现方法: 基础表单绑定 Vue 提供了 v-model 指令实现表单元素的双向…

vue实现表单

vue实现表单

Vue 表单实现方法 基础表单绑定 Vue 提供了 v-model 指令实现表单元素的双向数据绑定。在组件中定义数据属性,通过 v-model 绑定到表单元素: <template>…

vue表单实现

vue表单实现

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单输入与应用状态的双向绑定,适用于各类表单控件。例如文本输入框: <input v-model="message" plac…

php实现表单

php实现表单

PHP 表单基础实现 创建一个简单的 PHP 表单需要 HTML 表单结构和 PHP 处理脚本。以下是一个完整的示例: HTML 表单部分 (form.html) <form action=…

jquery表单

jquery表单

jQuery 表单操作 jQuery 提供了丰富的 API 用于表单操作,包括表单元素的选择、值获取与设置、事件处理等。 表单元素选择 使用 jQuery 选择器可以方便地选取表单元素: //…