![](/img/trans.png)
[英]How to insert space after 2 and then 3 characters in html input field?
[英]How to insert a space after user types the slash character (/) inside a content editable input field?
从我到目前为止在 stackoverflow 上看到的,有一些关于 String.replaceAll() function 或使用 javascript 和输入 ID 的建议。 下面的代码将在五个字符后引入一个空格,但我需要它在键入斜杠字符后添加空格。
例如:如果用户输入的是 abc12c/edfte; 我需要它在键入斜杠字符后引入一个空格以获得此结果:abc12c/edfte。
document.getElementById('target').addEventListener('input', function (e) {
var target = e.target, position = target.selectionEnd, length = target.value.length;
target.value = target.value.replace(/\s/g, '').replace(/(\d{5})/g, '$1 ').trim();
target.selectionEnd = position += ((target.value.charAt(position - 1) === ' ' && target.value.charAt(length - 1) === ' ' && length !== target.value.length) ? 1 : 0);
});
<label id="target" contenteditable="true" type="text"/>someText</label>
我感谢任何指导。
您可以使用replace
在/
之后添加一个空格。 此外,您应该跟踪contenteditable
元素中的插入符号 position,以便用户可以继续键入而不会丢失他们正在键入的 position。
这是一个现场演示:
const target = document.getElementById('target'), regExp = /\/([\S])/; target.addEventListener('input', () => { const selectionObj = window.getSelection(), currentCaretPosition = selectionObj.anchorOffset; if (regExp.test(target.textContent)) { const range = document.createRange(); /** add a space after "/" */ target.textContent = target.textContent.replace(regExp, '/ $1'); /** fix the caret position */ range.setStart(target.childNodes[0], currentCaretPosition + 1 > target.textContent.length? target.textContent.length - 1: currentCaretPosition + 1); range.collapse(;0). selectionObj;removeAllRanges(). selectionObj;addRange(range); } });
<label id="target" contenteditable="true" type="text" />someText</label>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.