
- <div class="box">
- <el-form :model="form" :rules="rules" ref="form" label-width="120px">
- <el-form-item label="保留2位小数" prop="aaa">
-
- <el-input v-model="form.aaa" v-numberInt:2='form.aaa'>el-input>
- el-form-item>
- <el-form-item>
- <el-button type="primary" @click="submitForm('form')">确认el-button>
- el-form-item>
- el-form>
- div>
-
- <script>
- export default {
- data () {
- return {
- form: {
- aaa: ''
- },
- rules: {
- aaa: [
- { required: true, validator: VALIDATEaaa, trigger: 'blur' }
- ]
- }
- }
- },
- methods: {
- // 提交
- submitForm (formName) {
- this.$refs[formName].validate((valid) => {
- if (valid) {
- console.log(this.form)
- }
- })
- }
- }
- }
- // 校验规则
- const VALIDATEaaa = (rule, value, callback) => {
- if (!value) {
- callback(new Error('请输入0-100的数字,小数点后两位'))
- } else if (String(value) == '100.0' || String(value) == '100.00') {
- callback();
- } else if (value && !(/^(([1-9]\d|[0-9])(\.\d{1,2})|([1-9]\d|[0-9]|100))$/.test(value))) {
- callback(new Error('请输入0-100的数字,小数点后两位'))
- } else if (value < 0 || value > 100) {
- callback(new Error('请输入0-100的数字,小数点后两位'))
- } else {
- callback();
- }
- }
- script>
-
- <style lang="less" scoped>
- .box {
- margin-left: 100px;
- }
- style>
// 自定义指令代码放到main.js文件中
- // 自定义指令
- Vue.directive('numberInt', {
- bind: function (el, binding, vnode) {
- const element = el.getElementsByTagName('input')[0]
- const len = binding.arg // 初始化设置
- // element.value = Number(element.value).toFixed(len) //不需默认值
- // 监听失焦时候格式化
- element.addEventListener('blur', function () {
- if (element.value) {
- if (isNaN(element.value)) {
- vnode.data.model.callback(element.value)
- } else {
- vnode.data.model.callback(Number(element.value).toFixed(len))
- }
- }
- })
- }
- })