Использование 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, и все будет хорошо.