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



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

AA1 1AA

a1a1aa

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);
});

然而,如果我在相关字段中键入一系列字符,那么除了从末尾开始的三个字符之外,每隔一个字符就会插入空格,例如:

11 11 11 11

我哪里错了?

由于事件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">

试试这个

function addSpace(str,fromEnd) {
var result ='';
fromEnd += 1;
for (i=0;i<str.length;i++) {
if (i >= str.length - fromEnd) {
result += str[i]+' ';
} else if (str[i] == ' '){
continue;
} else {
result += str[i];
}
}
return result;
}
['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);
});

它现在与你的代码完全兼容,只需将其替换为你的代码,它就会工作

最新更新