数组在筛选条件多选,以及在动态添加输入框数据绑定的应用

01 - 筛选条件多选:住宿等级选择3星,4星,5星;酒店设施选择wifi,热水壶
在这里插入图片描述
请求url参数为:price_lt=4000&hotellevel_in=3&hotellevel_in=4&hotellevel_in=5&hotelasset_in=2&hotelasset_in=1

因为对象中不可以存在相同key,不能用 对象 保存数据

相同的key时,对应的值用数组保存

const data = {
            price_lt: 4000,
            hotellevel_in: [3, 4, 5],
            hotelasset_in: [1, 2]
        };

Object.keys()方法得到由key组成的数组

const keys = Object.keys(data);    
//["price_lt", "hotellevel_in", "hotelasset_in"]

遍历keys,

判定key对应的值为否为数组,为数组,则再遍历,才拼接;
key对应的值不为数组,直接拼接

let str = '';
        keys.forEach(item => {
            if (Array.isArray(data[item])) {
                data[item].forEach(v => {
                    str += `${item}=${v}&`
                })
            } else {
                str += `${item}=${data[item]}&`
            }
        })
console.log(str);  
//price_lt=4000&hotellevel_in=3&hotellevel_in=4&hotellevel_in=5&hotelasset_in=1&hotelasset_in=2&

02 - 可以动态增删乘机人输入框,考虑数据如何双向绑定

在这里插入图片描述

所有乘机人数据存在数组,每位乘机人都是一个对象;

增加乘机人 - 往数组push一个对象

删除乘机人 - splice

乘机人输入框遍历数组生成

<el-form class="member-info" :model="{ users }" ref="userForm">
        <div
          class="member-info-item"
          v-for="(item, index) of users"
          :key="index"
        >
          <el-form-item
            label="乘机人类型"
            :prop="`users[${index}].username`"
            :rules="{
              required: true,
              message: '请输入乘机人姓名',
              trigger: 'blur',
            }"
          >
            <el-input
              v-model="item.username"
              placeholder="姓名"
              class="input-with-select"
            >
            </el-input>
          </el-form-item>

          <el-form-item
            label="证件类型"
            :prop="`users[${index}].id`"
            :rules="{
              required: true,
              message: '请输入身份证号码',
              trigger: 'blur',
            }"
          >
            <el-input
              v-model="item.id"
              placeholder="证件号码"
              class="input-with-select"
            >
            </el-input>
          </el-form-item>

 //因为有多个乘机人,写成form.username不合适
      users: [
        {
          username: "",
          id: "",
        },
      ],

handleDeleteUser: function (index) {
      //删除数组里面的元素
      this.users.splice(index, 1);
    },
    handleAddUsers: function () {
      //往users里面push对象
      this.users.push({
        username: "",
        id: "",
      });
    },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在layui中,我们可以使用form模块中的input组件来创建输入框动态添加输入框的方法可以使用JavaScript来实现,具体步骤如下: 1. 定义一个HTML容器,用于存放动态添加输入框组件。 ```html <div id="inputContainer"></div> ``` 2. 使用JavaScript代码动态创建输入框组件,并将其添加到容器中。 ```javascript var inputCount = 3; // 输入框数量 var inputContainer = document.getElementById("inputContainer"); for (var i = 0; i < inputCount; i++) { var input = document.createElement("input"); input.type = "text"; input.name = "input"; inputContainer.appendChild(input); } ``` 在上面的代码中,我们使用一个for循环来创建指定数量的输入框,并将它们添加到容器中。 3. 渲染数据输入框中。 如果我们要将数据渲染到输入框中,可以使用JavaScript中的value属性,将数据赋值给输入框。 ```javascript var data = ["apple", "banana", "orange"]; // 要渲染的数据 var inputs = inputContainer.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { inputs[i].value = data[i]; } ``` 在上面的代码中,我们首先定义一个要渲染的数据数组,然后获取所有的输入框组件,使用for循环将数据渲染到每个输入框中。 完整的代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>动态添加输入框组件</title> <link rel="stylesheet" href="//www.layuicdn.com/layui/v2.5.5/css/layui.css"> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md6"> <div id="inputContainer"></div> </div> </div> </div> <script src="//www.layuicdn.com/layui/v2.5.5/layui.js"></script> <script> var inputCount = 3; // 输入框数量 var inputContainer = document.getElementById("inputContainer"); for (var i = 0; i < inputCount; i++) { var input = document.createElement("input"); input.type = "text"; input.name = "input"; inputContainer.appendChild(input); } var data = ["apple", "banana", "orange"]; // 要渲染的数据 var inputs = inputContainer.getElementsByTagName("input"); for (var i = 0; i < inputs.length; i++) { inputs[i].value = data[i]; } </script> </body> </html> ``` 运行上面的代码,我们可以看到页面中生成了3个输入框,并且输入框中的值分别为apple、banana、orange。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值