繁体   English   中英

JS - 删除所有空格并从末尾插入空格三个字符

[英]JS - Remove all spaces and insert space three characters from end

我正在尝试正确格式化表单中的邮政编码条目,以便它们在正确的位置有一个空格,从末尾开始总是三个字符。 例如:

AA1 1AA

A1A 1AA

AA11 1AA

A1 1AA

const addSpace = (str, fromEnd) => `${str.slice(0, -1 * fromEnd)} ${str.slice(-1 * fromEnd)}`;    
['word', 'longword'].forEach(word => console.log(addSpace(word, 3)));
    var el = document.getElementById('input_1_14');
el.addEventListener('keyup', function () {
    this.value = addSpace(this.value, 3);
});

但是,如果我在相关字段中键入一系列字符,它会每隔一个字符插入空格,除了最后一个三个字符,例如:

1 1 1 1 1 1 111

我哪里错了?

这是由于事件onKeyUp ,您放置了一个额外的字母,它会在每个事件之后不断添加空格而不删除它们。

 const addSpace = (str, fromEnd) => `${str.slice(0, -1 * fromEnd)} ${str.slice(-1 * fromEnd)}`; const removeSpace = (str) => str.replace(/ /g, ""); const editString = (str, fromEnd) => addSpace(removeSpace(str), fromEnd); ['word', 'longword'].forEach(word => console.log(editString(word, 3))); var el = document.getElementById('input_1_14'); el.addEventListener('keyup', function () { this.value = editString(this.value, 3); });
 <input type="tex" id="input_1_14">

尝试这个

var str = '111111111';
var result ='';
for (i=0;i<str.length;i++) {
    if (i >= str.length-4) {
        result += str[i]+' ';
    } else if (str[i] == ' '){
        continue;
    } else {
        result += str[i];
    }
}
console.log(result);

它肯定会工作,检查它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM