使用Element-ui编辑弹框

演示如何使用Element-ui编辑弹框,编辑弹框,就是点击按钮触发事件,对内容进行新增或编辑,之后点击确定按钮进行保存操作。

 <el-dialog>:对话框组件,用于展示弹出窗口(弹窗/弹框)。

<el-form>:包括各种表单项,比如输入框、选择器、开关、单选框、多选框等。

其中的属性:

1、ref: 获取表单对象信息;
2、rules:用于定于表单验证规则,它是通过<el-form-item>中的prop获取数据源,而数据是从v-model获取,双向绑定;

3、@keyup.enter.native:使用键盘上回车键(Enter)提交表单数据;

4、下拉框选择器之远程搜索:即输入关键词到后端(getRegionList接口)返回的下拉框数据选项。(:multiple="false" 这里是单选,所以定义的value不是数组类型);

5、限制input输入框只能是数字(有小数点):οninput="value=value.replace(/^([0-9-]\d*\.?\d{0,3})?.*$/,'$1')"

6、限制input输入框只能是数字(无小数点):οninput="value=value.replace(/[^\d]/g, '')"

7、限制最大长度:maxlength="18"

另外:

限制input输入框的一些空格操作:

1、@blur="regionForm.regionNameZh=$event.target.value.trim()"

2、v-model.trim

只要内容不为空的情况下,2的弊端是在输入英文或者其他状况下需要到中间才能给空格,而不能在尾部直接给空格。
 

<!-- 编辑弹框 -->
    <el-dialog title="编辑" :visible.sync="dialogVisible" :before-close="handleClose">
      <el-form :rules="rules" ref="ruleForm" :model="dataForm" label-width="120px" :inline="true" label-position="right" @keyup.enter.native="handleDialogOk">
        <el-form-item label="景区" prop="regionId">
          <el-select v-model="dataForm.regionId" :multiple="false" :filterable="true" :remote="true" reserve-keyword placeholder="请输入关键词"
            :remote-method="getRegionList">
            <el-option v-for="item in regionList" :key="item.regionId" :label="item.regionName" :value="item.regionId"/>
          </el-select>
        </el-form-item>
        <el-form-item label="优惠价格" prop="low">
          <el-input v-model="dataForm.low" maxlength="18" oninput="value=value.replace(/^([0-9-]\d*\.?\d{0,3})?.*$/,'$1')"></el-input>
        </el-form-item>
        <el-form-item label="人流量" prop="volume">
          <el-input v-model="dataForm.volume" maxlength="18" oninput="value=value.replace(/[^\d]/g, '')"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button type="primary" @click="handleDialogOk">确 定</el-button>
      </span>
    </el-dialog>
export default {
  name: "Test",
  data() {
    return {
      dataForm: {},
      dialogVisible: false,
      rules: {
        regionId: [
          { required: true, message: '景区不能为空', trigger: 'blur' }
        ],
        low: [
          { required: true, message: '优惠价不能为空', trigger: 'blur' }
        ],
        volume: [
          { required: true, message: '人流量不能为空', trigger: 'blur' }
        ]
      },
      regionList: []
    };
  },
 
  methods: {
    // 打开新增数据弹窗
    handleAdd() {
      this.dialogVisible = true;
      this.dataForm= {}
    },
    // 打开编辑弹窗
    handleClick(val) {
      this.dialogVisible = true;
      this.dataForm= {...val};// 对表单进行重置,即修改表单的数据不想保存,关闭弹框,数据不会跟着变。

    },
    // 编辑确定按钮
    handleDialogOk() {
      this.$refs['ruleForm'].validate(async (valid) => {
        if (valid) {
          const res = await saveDataAPI(this.dataForm)
          this.$message({ type: 'success', message: res.msg })
          this.dialogVisible = false
        }
      });
    },
    // 关闭弹框
    handleClose() {
      this.$refs['ruleForm'].resetFields();    
      this.dialogVisible = false;
    },
    // 下拉框选择的数据
    async getRegionList(keyword) {
      const res = await getRegionOptionByKeyword(keyword != null && keyword.trim() != "" ? keyword.trim() : '');
      if (res.code == 200) {
        this.regionList = res.data;
      }
    }

  }
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值