Vue中form表单校验rules的问题(对象数组过滤新对象数组 ,对象校验,数组校验,)

js遍历对象数组 通过过滤将字段值=0的过滤到新的对象数组中

form.value.leftPinCameraConfigList=response.data.filter(item=> item.pinType==0);

对象数组:每个元素都是一个对象,每个对象有自己的属性和值,可以通过对象的属性名来访问对象的值 集合数组:每个元素是一个简单的值,没有属性名,只有值。可以通过索引号来访问集合数组的值

let objArr = [
  { name: 'Tom', age: 20 },
  { name: 'John', age: 25 },
  { name: 'Mary', age: 30 }
];
`et setArr = [1, 2, 3, 4, 5];``

<div v-for="item in objArr">
  <p>{{ item.name }}</p>
  <p>{{ item.age }}</p>
</div>

<div v-for="item in setArr">
  <p>{{ item }}</p>
</div>

表单对象和单个字段校验

      <el-form-item label="品名:"  prop="name"  label-width="60px" >
        <el-input style="width:160px;margin-left: 15px;" v-model="form.name" placeholder="请输入品名名称" :disabled="true"   />
      </el-form-item>
      <el-row style="margin-top: -8px;">
        <el-form-item label="X:" prop="vehicleInitialPositionX" label-width="155px"  >
          <el-input style="width:130px;margin-left: 8px;margin-top: 5px;" v-model="form.vehicleObject.vehicleInitialPositionX" placeholder="X" />
        </el-form-item>
      </el-row>
      </el-form>

数组校验

  <el-col :span="3">
    <span style=" margin-left: -18px;  ">{{form.cameraNamesList[index].cname}}:</span>
  </el-col>
  <el-col :span="2.2"  >
    <!-- <el-form-item :prop="`cameraParameterList.${index}.initialPosition`" label-width="10px"  :rules="rules.backLight"> -->
    <el-form-item :prop="`cameraParameterList.${index}.initialPosition`" label-width="10px"  :rules="rules.initialPosition" >
      <el-input style=" width:68px;margin-left: -30px;" 
        v-model="form.cameraParameterList[index].initialPosition" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.initialPositionSpeed`" label-width="10px"  :rules="rules.initialPositionSpeed" >
      <el-input style=" width:68px"
        v-model="form.cameraParameterList[index].initialPositionSpeed" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.startShootingPosition`" label-width="10px" :rules="rules.startShootingPosition" >
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].startShootingPosition" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.startShootingPositionSpeed`" label-width="10px"  :rules="rules.startShootingPositionSpeed">
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].startShootingPositionSpeed" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.endShootingPosition`" label-width="10px" :rules="rules.endShootingPosition" >
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].endShootingPosition" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.endShootingPositionSpeed`" label-width="10px" :rules="rules.endShootingPositionSpeed" >
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].endShootingPositionSpeed" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.focusPosition`" label-width="10px"  :rules="rules.focusPosition" >
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].focusPosition" placeholder="" />
    </el-form-item>
  </el-col>
  <el-col :span="2.2"   style=" margin-left: 2px">
    <el-form-item :prop="`cameraParameterList.${index}.focusPositionSpeed`" label-width="10px" :rules="rules.focusPositionSpeed"  >
      <el-input style=" width:68px" 
        v-model="form.cameraParameterList[index].focusPositionSpeed" placeholder="" />
    </el-form-item>
  </el-col>
</el-row>

      </el-form>

定义

const data = reactive({
        form: {
          radioLeft:1,
          name: null,
          productNameId: null,
          vehicleObject: reactive({
            id: null,
            productNameId: null,
            vehicleInitialPositionX:null,
            vehicleInitialPositionY:null,
            vehicleClampPositionX:null,
            vehicleClampPositionY:null,
            clampMoment:null,
            vehicleInitialPositionSpeed:null,
            vehicleClampPositionSpeed:null,
          }),
          cameraParameterList: [
            { productNameId: null,
              initialPosition: null,
              initialPositionSpeed: null,
              startShootingPosition: null,
              startShootingPositionSpeed: null,
              endShootingPosition: null,
              endShootingPositionSpeed: null,
              focusPosition: null,
              focusPositionSpeed: null,   
            },
            {
              productNameId: null,
              initialPosition: null,
              initialPositionSpeed: null,
              startShootingPosition: null,
              startShootingPositionSpeed: null,
              endShootingPosition: null,
              endShootingPositionSpeed: null,
              focusPosition: null,
              focusPositionSpeed: null,   
            },
            {
              productNameId: null,
              initialPosition: null,
              initialPositionSpeed: null,
              startShootingPosition: null,
              startShootingPositionSpeed: null,
              endShootingPosition: null,
              endShootingPositionSpeed: null,
              focusPosition: null,
              focusPositionSpeed: null,   
            },
            {
              productNameId: null,
              initialPosition: null,
              initialPositionSpeed: null,
              startShootingPosition: null,
              startShootingPositionSpeed: null,
              endShootingPosition: null,
              endShootingPositionSpeed: null,
              focusPosition: null,
              focusPositionSpeed: null,   
            },
            //第五个相机参数
            {
              productNameId: null,
              initialPosition: null,
              initialPositionSpeed: null,
              startShootingPosition: null,
              startShootingPositionSpeed: null,
              endShootingPosition: null,
              endShootingPositionSpeed: null,
              focusPosition: null,
              focusPositionSpeed: null,   
            },
          ],

move

const data = reactive({
form: {

radioLeft: 1,
name: null,
productNameId: null,
lightObject1: reactive({
  id: null,
  productNameId: null,
  cameraType: "",
  cameraIp: "",
  shootingNumber: "",
  exposureTime: "",
  gain: "",
  length: "",
  width: "",
  picturePath: "",
  continuousShootingNumber: "",
  triggerTime: "",
}),
//相机参数集合
lightCamera: reactive([]),}

js
//往数组中添加这八个相机配置参数
for(var i=0;i<8;i++){
const clonedLightObject1 = { …data.form.lightObject1 };
clonedLightObject1.productNameId=pid
clonedLightObject1.cameraType=i
clonedLightObject1.shootingNumber=1

  data.form.lightCamera.push(clonedLightObject1);
}

页面

<el-dialog :title="title" v-model="openLightCamera" width="950px" append-to-body  v-if="openLightCamera">
   
  <el-form ref="lightRefs" :model="form.lightCamera" :rules="rulesws" label-width="60px"   >
    <el-row v-for="(i, index) in form.lightCamera.length" style="margin-top: -2px;">
    <el-col :span="3">
      <span
        style=" margin-left: -8px;font-size: 10px;font-weight:bold;   ">{{formatStatus(form.lightCamera[index].cameraType) }}</span>
    </el-col>
    <el-col :span="2" style=" margin-left: -38px">
      <!-- <el-form-item :prop="`cameraParameterList.${index}.initialPosition`" label-width="10px"  :rules="rules.backLight"> -->
      <el-form-item :prop="`lightCamera.${index}.cameraType`" label-width="10px"
        :rules="rules.initialPositions"
        >
        <el-input style=" width:65px;margin-left: 5px; font-size: 5px;"  :disabled="true"
          v-model="form.lightCamera[index].cameraType" placeholder="" />
      </el-form-item>
    </el-col>
    </el-row>
  </el-form>
  <template #footer>
    <div class="dialog-footer">
      <!-- v-hasPermi="['org:lightParameter:add']" -->
      <el-button :loading="buttonLoading" type="primary" @click="submitCameraLight()"
      >提交</el-button>
      <el-button @click="openLightCamera = false">取 消</el-button>
    </div>
  </template>
</el-dialog>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue,可以使用Vue的表单验证规则来验证数组。下面是一个示例代码,演示如何使用Vue的表单验证规则来验证数组: 首先,在Vue组件定义一个包含数组的表单数据对象,并为每个数组元素定义验证规则。例如,我们有一个名为"items"的数组,每个元素都应该是字符串,并且不能为空。 ```html <template> <form @submit="submitForm"> <div v-for="(item, index) in items" :key="index"> <input v-model="items[index]" :class="{ 'is-invalid': !isItemValid(index) }"> <div v-if="!isItemValid(index)" class="invalid-feedback">Item is required.</div> </div> <button type="submit">Submit</button> </form> </template> <script> export default { data() { return { items: ['', '', ''], // 初始值为空字符串的数组 }; }, methods: { submitForm() { // 在提交表单时,检查每个数组元素是否满足验证规则 if (this.items.every(item => item !== '')) { // 执行提交表单的操作 console.log('Form submitted successfully!'); } else { console.log('Form validation failed!'); } }, isItemValid(index) { // 验证特定索引的数组元素是否满足验证规则 return this.items[index] !== ''; }, }, }; </script> ``` 在上面的代码,我们使用`v-for`指令遍历数组,并使用`v-model`指令将输入框与数组元素进行绑定。使用`:class`绑定了一个条件类,当数组元素不满足验证规则时添加`is-invalid`类,以便显示样式上的错误提示。同时,我们在每个输入框后面显示了一个错误提示信息,只有当数组元素不满足验证规则时才会显示。 在`submitForm`方法,我们使用`every`方法检查所有数组元素是否都不为空字符串,如果是,则表示表单验证通过,可以执行提交表单的操作。 上述代码只是一个简单的示例,你可以根据具体的需求和验证规则进行更复杂的表单验证。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值