如何在jQuery Masking中去除空格?掩码截断问题求助
解决jQuery Mask输入含空格字符串被截断的问题
你的问题出在掩码规则里没允许空格字符,导致输入的空格被插件判定为无效字符,直接截断了后面的有效内容。下面是两种可行的解决方案:
方案一:允许空格作为可选掩码字符,获取值时去除空格
这种方法会让掩码接受空格输入,之后再通过字符串处理去掉空格得到最终结果:
// 初始化掩码,添加允许空格的规则 $('#pmField').mask('XXXXXX', { translation: { 'X': { pattern: /[A-Za-z0-9]/, optional: true }, ' ': { pattern: /\s/, optional: true } // 新增规则:允许空格作为可选字符 } }); // 当需要获取处理后的值时,去除所有空格 const processedValue = $('#pmField').val().replace(/\s/g, ''); // 此时 processedValue 会是 "A34434"
方案二:使用可变长度掩码,兼容任意含空格的输入
如果你的输入长度不固定,可以用这种更灵活的方式,掩码接受字母数字和空格,最后统一去除空格:
// 使用*作为掩码字符,匹配字母数字和空格,长度可选 $('#pmField').mask('*', { translation: { '*': { pattern: /[A-Za-z0-9\s]/, optional: true } } }); // 获取并处理值 const finalValue = $('#pmField').val().replace(/\s/g, '');
原理说明
原来的代码中,XXXXXX是固定6位的掩码,每个X仅匹配字母数字。当输入空格时,插件会跳过这个无效字符,但后续的有效字符无法对应到掩码的剩余位置,因此只保留了前4个符合规则的字符。通过添加空格的匹配规则,或者使用兼容空格的可变掩码,就能让插件正确识别所有输入内容,再通过字符串替换去掉空格得到你想要的结果。
内容的提问来源于stack exchange,提问作者user3711357
相关产品推荐
相关产品推荐

