前端三级联动拼接,并且再次选择清除上次的内容

事例

  • 下拉框
<template>
  <div>
    <el-form ref="form" :model="form" label-width="80px">
      <el-form-item label="头像上传">
        <el-upload
          action="http://localhost:8000/oss/toUp"
          list-type="picture-card"
          :on-preview="handlePictureCardPreview"
          :on-remove="handleRemove"
          :on-success="handleAvatarSuccess"
        >
          <i class="el-icon-plus"></i>
        </el-upload>
        <el-dialog :visible.sync="dialogVisible">
          <img
            v-if="form.imageUrl"
            width="100%"
            :src="form.imageUrl"
            alt="陈刚"
          />
        </el-dialog>
      </el-form-item>
      <el-form-item label="用户">
        <el-input v-model="form.username"></el-input>
      </el-form-item>
      <el-form-item label="密码">
        <el-input v-model="form.password"></el-input>
      </el-form-item>
      <el-form-item label="省-市">
        <el-select
          v-model="form.pid"
          placeholder="请选择省"
          @change="queryCity"
        >
          <el-option
            v-for="item in proviceList"
            :key="item.value"
            :label="item.cityName"
            :value="item.id"
          ></el-option>
        </el-select>
        ---
        <el-select
          v-model="form.cid"
          placeholder="请选择市"
          @change="queryAddress"
        >
          <el-option
            v-for="item in cityList"
            :key="item.value"
            :label="item.cityName"
            :value="item.id"
          ></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="地址">
        <el-input v-model="form.address"></el-input>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialogImageUrl: "",
      dialogVisible: false,
      form: {
        imageUrl: "",
        username: "",
        password: "",
        pid: "",
        cid: "",
        address: "",
      },
      proviceList: [],
      cityList: [],
      andWith: "",
      getName: "",
    };
  },
  methods: {
    handleRemove(file, fileList) {
      console.log(file, fileList);
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.form.imageUrl = file.url;
      this.dialogVisible = true;
    },
    onSubmit() {
      alert(this.imageUrl);
    },
    handleAvatarSuccess(res, file) {
      this.form.imageUrl = res.data;
      console.log(this.form.imageUrl);
    },
    // 下拉
    queryPrivice() {
      this.$axios
        .get("http://localhost:8000/city/findCity/" + 1)
        .then((res) => {
          console.log(res.data.data);
          this.proviceList = res.data.data;
        });
    },
    queryCity(item) {
      let obj = {};
      obj = this.proviceList.find((val) => {
        return val.id === item;
      });
      let getName = "";
      getName = obj.cityName;
      console.log(getName);
      this.form.address = getName;
      this.andWith = getName.length;
      this.$axios
        .get("http://localhost:8000/city/findCity/" + item)
        .then((res) => {
          this.cityList = res.data.data;
          this.form.cid = "";
        });
    },
    queryAddress(item) {
      let obj = {};
      obj = this.cityList.find((val) => {
        return val.id === item;
      });
      this.getName = "";
      this.getName = obj.cityName;
      console.log("get:" + this.getName);
      if (this.form.address.length > this.andWith) {
        this.form.address = this.form.address.substring(0,this.andWith);
      }
      this.form.address += this.getName;
    },
  },
  created() {
    this.queryPrivice();
  },
};
</script>

<style>
</style>

介绍
109-117行
这里就是第一次下拉的数据,赋进需要的字段中
117行的this.andWith = getName.length;是重点
因为要在下一个change事件做判断
133-136行
这里是进行长度判断,只要是字段场地大于第一次下拉数据的长度,就进行截取
然后再进行+=追加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值