当前位置:首页 > VUE

vue实现多填空

2026-03-29 00:17:56VUE

Vue 实现多填空功能

在 Vue 中实现多填空功能可以通过动态绑定和条件渲染来实现。以下是一个完整的实现方案:

动态绑定输入框

使用 v-model 绑定每个填空的输入值,通过数组或对象存储多个填空的值:

<template>
  <div v-for="(blank, index) in blanks" :key="index">
    <input v-model="blank.value" :placeholder="blank.placeholder">
  </div>
</template>

<script>
export default {
  data() {
    return {
      blanks: [
        { value: '', placeholder: '填空1' },
        { value: '', placeholder: '填空2' }
      ]
    }
  }
}
</script>

动态添加和删除填空

通过方法动态管理填空的数量:

<template>
  <div>
    <button @click="addBlank">添加填空</button>
    <div v-for="(blank, index) in blanks" :key="index">
      <input v-model="blank.value">
      <button @click="removeBlank(index)">删除</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      blanks: [{ value: '' }]
    }
  },
  methods: {
    addBlank() {
      this.blanks.push({ value: '' })
    },
    removeBlank(index) {
      this.blanks.splice(index, 1)
    }
  }
}
</script>

填空题验证

添加验证逻辑确保所有填空都已填写:

<template>
  <div>
    <div v-for="(blank, index) in blanks" :key="index">
      <input v-model="blank.value" required>
    </div>
    <button @click="submit">提交</button>
    <p v-if="error" class="error">{{ error }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      blanks: [{ value: '' }],
      error: ''
    }
  },
  methods: {
    submit() {
      this.error = ''
      const isEmpty = this.blanks.some(blank => !blank.value.trim())
      if (isEmpty) {
        this.error = '请填写所有空白处'
        return
      }
      // 提交逻辑
    }
  }
}
</script>

填空题自动编号

为每个填空添加自动编号:

<template>
  <div v-for="(blank, index) in blanks" :key="index">
    <span>{{ index + 1 }}.</span>
    <input v-model="blank.value">
  </div>
</template>

填空题答案比对

实现用户答案与标准答案的比对功能:

<template>
  <div>
    <div v-for="(blank, index) in blanks" :key="index">
      <input v-model="blank.userAnswer">
      <span v-if="blank.correct !== undefined">
        {{ blank.correct ? '✓' : '✗' }}
      </span>
    </div>
    <button @click="checkAnswers">检查答案</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      blanks: [
        { userAnswer: '', correctAnswer: 'vue' },
        { userAnswer: '', correctAnswer: 'react' }
      ]
    }
  },
  methods: {
    checkAnswers() {
      this.blanks.forEach(blank => {
        blank.correct = blank.userAnswer === blank.correctAnswer
      })
    }
  }
}
</script>

填空题样式优化

添加 CSS 样式提升用户体验:

vue实现多填空

<template>
  <div class="blank-container">
    <div v-for="(blank, index) in blanks" :key="index" class="blank-item">
      <input v-model="blank.value" class="blank-input">
    </div>
  </div>
</template>

<style>
.blank-container {
  margin: 20px;
}
.blank-item {
  margin-bottom: 10px;
}
.blank-input {
  padding: 8px;
  border: 1px solid #ccc;
  border-radius: 4px;
}
</style>

以上方法可以根据实际需求组合使用,实现各种复杂的多填空场景。通过 Vue 的响应式特性,可以轻松管理多个填空的状态和交互。

标签: vue
分享给朋友:

相关文章

vue使用vr实现标注

vue使用vr实现标注

Vue 中使用 VR 实现标注的方法 在 Vue 项目中结合 VR 技术实现标注功能,可以通过 WebXR 和 Three.js 等库实现。以下为具体实现方法: 安装依赖 确保项目中已安装 Thre…

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue实现granfana

vue实现granfana

Vue 实现类似 Grafana 的仪表盘 要在 Vue 中实现类似 Grafana 的仪表盘功能,需要结合数据可视化库、状态管理和 UI 组件。以下是关键步骤和推荐工具: 数据可视化库 使用 E…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue实现tabbar

vue实现tabbar

Vue 实现 TabBar 的方法 使用 Vue Router 实现基础 TabBar 安装 Vue Router 依赖: npm install vue-router 创建路由配置文件(route…

vue实现截屏怎么实现

vue实现截屏怎么实现

Vue实现截屏的方法 使用html2canvas库 html2canvas是一个流行的JavaScript库,可以将网页元素转换为Canvas图像。在Vue项目中安装html2canvas: npm…