【实现Element表单区间输入框】

思路:两个输入框组合而成的,绑定的是数组的第一项和第二项、搭配自定义正则从而实现的区间输入框

效果
【实现Element表单区间输入框】_第1张图片
【实现Element表单区间输入框】_第2张图片
核心代码

【实现Element表单区间输入框】_第3张图片

页面部分传递给组件的数据上部分核心之外还需给组件一个默认值

dataform: {
    interval: [],
  },
interval数组的第一项绑定的第一个区间,第二项绑定的第二个区间
validator: interval,正则校验

---------------------------------------------------
/**

 * 区间正则匹配
 * @param {*} rule
 * @param {*} value
 * @param {*} callback
 */
export function interval(rule, value, callback) {
    let flag = value.filter(item => item).length == 2 //判断是否都有值
    let flag2 = parseInt(value[0]) <= parseInt(value[1]) //判断最小值是否小于最大值
    if (flag && flag2) {
        return callback();
    }
    if (!flag) {
        callback(new Error('区间值不能为空'))
    } else {
        if (flag2) {
            callback()
        } else {
            return callback(new Error('最小值不能大于最大值'))
        }
    }
}


---------------------------------------------------
组件 部分
  <!-- 区间输入框 -->
              <div class="interval" v-if=" item.type ==='interval'">
                <el-input
                  :type="item.intervaltype"
                  :style="item.Input_unit?'width:25%;margin-right: 5px':'width:100%'"
                  :placeholder="item.placeholder || '请输入' + item.name"
                  :disabled="item.disabled"
                  :rows="item.rows||3"
                  :oninput="item.oninput||''"
                  v-model.trim="dataform[item.prop][0]"
                ></el-input>
                <span>{{item.Input_unit||''}}</span>
                <el-input
                  :type="item.intervaltype"
                  :style="item.Input_unit?'width:25%;margin-right: 5px':'width:100%'"
                  :placeholder="item.placeholder || '请输入' + item.name"
                  :disabled="item.disabled"
                  :rows="item.rows||3"
                  :oninput="item.oninput||''"
                  v-model.trim="dataform[item.prop][1]"
                ></el-input>
              </div>

关闭弹框的时候记得清空校验充值表单即可

你可能感兴趣的:(javascript,前端,开发语言)