请问如何全局禁止输入特殊字符(iview、vue)

发布于 2022-09-12 01:06:51 字数 103 浏览 8 评论 0

有一个需求是不允许用户输入特殊字符。项目已经上线有段时间,页面较多,不可能一个一个Input去改。

考虑过document监听keydown,但又防不了复制黏贴,请大佬支招。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

霞映澄塘 2022-09-19 01:06:51
const pattern = new RegExp('[`~^*|{}<>¥……*|‘”“]');//这些字段不允许输入
const testMark = function (s) {
    return pattern.test(s);
};
const replaceMark = function (s, isOutSpace) {
    let rs = '';
    for (let i = 0; i < s.length; i++) {
        rs = rs + s.substr(i, 1).replace(pattern, '');
        rs = rs.replace('-', '');
        // rs = rs.replace('\\', '');
        if (!isOutSpace) {
            rs = rs.replace(' ', '');
        }
    }
    return rs;
};

const timeReplaceMark = function (obj) {
    if (testMark(obj.value)) {
        obj.value = replaceMark(obj.value, true);
    } else if (/'/.test(obj.value)) {
        const tempValue = obj.value.replace(/'/gi, '');
        if (tempValue == '') { //如果全是'',代表不是输入词语,可以替换
            obj.value = tempValue;
        }
    } else if (/"/.test(obj.value)) {
        const tempValue = obj.value.replace(/"/gi, '');
        if (tempValue == '') { //如果全是'',代表不是输入词语,可以替换
            obj.value = tempValue;
        }
    }
};
document.addEventListener('input', function (ev) {
    // console.log(ev.target);
    if(ev.target.type === 'text'){
        timeReplaceMark(ev.target);
    }
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文