Сделать вводное значение в верхнем регистре в CSS без влияния на местозаполнитель

Есть ли способ сделать входное значение в верхнем регистре, не делая заполнитель в верхнем регистре?

Похоже, я получаю тот или иной. Я бы предпочел сделать это чисто, просто используя CSS (последнее средство JS).

enter image description here

Ответ 1

Каждый механизм браузера имеет свою реализацию для управления стилем placeholder. Используйте следующее:

Пример jsBin.

input { 
    text-transform: uppercase;
}
::-webkit-input-placeholder { /* WebKit browsers */
    text-transform: none;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
    text-transform: none;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
    text-transform: none;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
    text-transform: none;
}
::placeholder { /* Recent browsers */
    text-transform: none;
}

Излишне говорить, что это работает только в браузерах, которые могут обрабатывать заполнители. (IE9/10+)

Ответ 2

Я знаю, что вы сказали, что использование JS было последним средством, однако в этом случае это, вероятно, более эффективно и проще (также, если вы не используете JS, значение, отправленное в frorm submit, не будет в верхнем регистре), так что это может быть лучше без дополнительного CSS:

<input oninput="this.value = this.value.toUpperCase()" placeholder="Enter Drivers License #" />