如何防止用户输入显示在移动浏览器的输入字段中

How can I prevent user Input to be shown on input filed in mobile browser

我希望用户输入他的名字,但我想将字符数限制在 15 个以内,在桌面浏览器中它可以工作。

document.querySelector('#input-name').addEventListener('keydown', function (e) {

const maxLetters = 15

document.querySelector('#input-name').addEventListener('keyup', function (e) {
    userName = e.target.value
    document.querySelector('#labelInputName').textContent = userName.length + "/" + maxLetters

})

userName = e.target.value

if (userName.length >= maxLetters && e.keyCode != 46 && e.keyCode != 8) {
    e.preventDefault();
}

else if (e.keyCode != 46 && e.keyCode != 8) {
    document.querySelector('#labelInputName').textContent = userName.length + 1 + "/" + maxLetters
}

})

所以在桌面浏览器中,当我达到 15/15 时,它可以在键盘上按除 Delete 和 BackSpace 之外的任何键后它可以工作(甚至不会在输入字段中显示 16 个字符)。 ..

但是在移动浏览器中,我达到了 15/15 而不是继续保持 16/15.... 我该如何解决?

到目前为止,最跨浏览器的方法是使用 input 元素的 maxlength attribute;不需要 JavaScript:

<input id="input-name" maxlength="15">

实例:

<input id="input-name" maxlength="15">

maxlength 基本上永远是 HTML 的一部分(它在 1993 年的 HTML+ spec 中),我希望浏览器对它的支持是普遍的。

如果您需要设置 JavaScript 的最大长度,您可以使用 maxLength 属性:

document.getElementById("input-name").maxLength = 15;

实例:

document.getElementById("input-name").maxLength = 15;
<input id="input-name">

长期支持的maxlength属性怎么样? https://www.w3schools.com/tags/att_input_maxlength.asp