uni-app form表单嵌套表格并校验的组件

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app form表单嵌套表格并校验的组件

小程序实现类似elementui中form嵌套表格并检验有可用组件吗
1 回复

在uni-app中实现一个表单嵌套表格,并且进行校验的组件,可以通过结合<form>标签、<view>标签(用于布局表格)以及自定义校验逻辑来完成。以下是一个简化的代码案例,展示了如何实现这一目标。

首先,我们定义一个表单组件NestedFormTable.vue,其中包含一个表单和嵌套的表格。

<template>
  <form @submit.prevent="handleSubmit">
    <view>
      <label>基本信息:</label>
      <view class="table">
        <view class="table-row">
          <view class="table-cell">姓名:</view>
          <view class="table-cell">
            <input type="text" v-model="formData.name" required />
          </view>
        </view>
        <view class="table-row">
          <view class="table-cell">年龄:</view>
          <view class="table-cell">
            <input type="number" v-model="formData.age" required min="1" />
          </view>
        </view>
        <!-- 可以继续添加更多行 -->
      </view>
    </view>
    <button type="submit">提交</button>
  </form>
</template>

<script>
export default {
  data() {
    return {
      formData: {
        name: '',
        age: null,
      },
    };
  },
  methods: {
    handleSubmit() {
      // 校验逻辑
      if (!this.formData.name) {
        uni.showToast({ title: '姓名不能为空', icon: 'none' });
        return;
      }
      if (this.formData.age === null || this.formData.age < 1) {
        uni.showToast({ title: '年龄必须大于0', icon: 'none' });
        return;
      }
      // 校验通过,提交数据
      console.log('提交数据:', this.formData);
      // 这里可以调用API提交数据
    },
  },
};
</script>

<style scoped>
.table {
  display: flex;
  flex-direction: column;
}
.table-row {
  display: flex;
  justify-content: space-between;
  margin-bottom: 10px;
}
.table-cell {
  padding: 5px;
}
</style>

在这个例子中,表单嵌套了一个简单的表格布局,其中包含了姓名和年龄两个字段。表单提交时,会触发handleSubmit方法,该方法中包含基本的校验逻辑。如果校验失败,会弹出提示信息;如果校验通过,则打印提交的数据(实际应用中可以替换为API调用)。

注意,这个示例使用了uni-app的API如uni.showToast来显示提示信息。根据实际需求,你可能需要调整校验逻辑和表格布局。此外,对于更复杂的表单和校验需求,可以考虑使用第三方表单校验库或自定义更复杂的校验逻辑。

回到顶部