vue实现,两个el-input输入框,分别为实测建筑面积和实测套内面积,都需要限制精确到两位小数,且限制用户输入的实测建筑面积必须大于实测套内面积,否则显示提示文字“实测建筑面积需大于实测套内面积”
时间: 2023-04-04 13:04:02 浏览: 272
您好,这是一个关于 Vue 实现的问题。您可以通过在 el-input 中添加 type="number" 和 step="0.01" 属性来限制精确到两位小数。而要限制实测建筑面积必须大于实测套内面积,您可以在 el-input 中添加一个自定义的校验函数,判断两个输入框的值是否符合要求,如果不符合,则显示提示文字“实测建筑面积需大于实测套内面积”。
相关问题
vue实现代码,两个el-input输入框带有m²的后缀 ,分别为实测建筑面积和实测套内面积,都需要限制精确到两位小数,且限制用户输入的实测建筑面积必须大于实测套内面积,否则显示提示文字“实测建筑面积需大于实测套内面积”
可以使用vue的自定义指令来实现这个功能,代码如下:
```html
<template>
<div>
<el-input v-model="buildingArea" v-limit-decimal:2 placeholder="实测建筑面积"></el-input>
<el-input v-model="innerArea" v-limit-decimal:2 placeholder="实测套内面积"></el-input>
<div v-if="buildingArea <= innerArea">实测建筑面积需大于实测套内面积</div>
</div>
</template>
<script>
export default {
data() {
return {
buildingArea: '',
innerArea: ''
}
},
directives: {
'limit-decimal': {
bind(el, binding) {
el.addEventListener('input', function() {
let val = el.value
val = val.replace(/[^\d.]/g, '') // 只保留数字和小数点
val = val.replace(/^\./g, '') // 第一个字符不能是小数点
val = val.replace(/\.{2,}/g, '.') // 不能出现多个小数点
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.') // 只保留一个小数点
val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') // 限制精确到两位小数
el.value = val
})
}
}
}
}
</script>
```
其中,自定义指令 `v-limit-decimal` 用于限制输入框的小数位数,具体实现可以参考上面的代码。在模板中,使用 `v-if` 判断实测建筑面积是否大于实测套内面积,如果不是,则显示提示文字。
阅读全文