Використання CSS text-transform: uppercaseне змінює фактичний вхід, а лише змінює його вигляд. Якщо ви надсилаєте вхідні дані на сервер, він все одно буде переноситись на малі регістри або все-таки ви їх ввели. Щоб фактично трансформувати вхідне значення, потрібно додати код JavaScript, як показано нижче:
document.querySelector("input").addEventListener("input", function(event) {
event.target.value = event.target.value.toLocaleUpperCase()
})
<input>
Тут я використовую toLocaleUpperCase()для перетворенняinput значення у великі регістри. Це добре працює, поки вам не потрібно буде редагувати те, що ви ввели, наприклад, якщо ви ввели ABCXYZ і тепер ви намагаєтесь змінити його на ABCLMNXYZ, він стане ABCLXYZMN, оскільки після кожного введення курсор стрибає до кінця.
Щоб подолати цей стрибок курсору, ми повинні внести такі зміни у свою функцію:
document.querySelector("input").addEventListener("input", function(event) {
var input = event.target;
var start = input.selectionStart;
var end = input.selectionEnd;
input.value = input.value.toLocaleUpperCase();
input.setSelectionRange(start, end);
})
<input>
Зараз усе працює як очікувалося, але якщо у вас повільний ПК, під час введення тексту, ви можете побачити текст, який переходить з малих літер у великі регістри. Якщо це вас дратує, настав час використовувати CSS, застосуйте input: {text-transform: uppercase;}до файлу CSS, і все буде добре.