Вместо того, чтобы устанавливать атрибут value
напрямую, установите атрибут «value» вашего электронного письма, выполнив следующие действия:
document.getElementById("btn").addEventListener("click", function() {
// Remove this:
// document.getElementById("myEmail").value = "";
// Replace with this:
document.getElementById("myEmail").setAttribute("value", "");
})
E-mail: <input type="email" id="myEmail" placeholder="Enter e-mail" autocomplete="off">
<button id="btn">Try it</button>
<p>Click button to empty the email field. Notice that the placehold is visible after clicking, even when email field contains whitespaces.</p>
Этот метод заставляет браузер повторно визуализировать поле ввода, чтобы представленное значение соответствовало заданному атрибуту (то есть ""
).
Почему ваш оригинальный метод не работает;Насколько я понимаю, внутренне атрибут value
DOM типа ввода электронной почты «обрезается», что означает, что чтение или установка значения, дополненного пробелами, не отличается от того же значения без пробелов.Поэтому обновление значения до ""
с " "
будет считаться обновлением «того же значения» и будет игнорироваться.