input-safe.vue 669 Bytes
<template>
    <Input :value="value" v-bind="$attrs" v-on="$listeners" />
</template>

<script>
import xss from 'util/xss';

export default {
    name: 'input-safe',
    props: ['value'],
    created() {
        this.$listeners.input = this.input;
    },
    methods: {
        input(val) {
            if (typeof val === 'string') {
                this.value = xss.replaceIllegal(val);
            } else {
                this.value = val;
            }
            this.$emit('input', this.value);
            if (this.value !== val) {
                this.$Message.error('输入内容有敏感字符,已自动清除');
            }
        }
    }
};
</script>