【发布时间】:2014-09-30 13:18:42
【问题描述】:
有没有一种方法可以在不将占位符设为大写的情况下将输入值设为大写?
似乎我得到了一个或另一个。我宁愿只使用 CSS(JS 最后的手段)干净地做到这一点。
【问题讨论】:
-
将您当前的代码弹出到小提琴中并在您的问题中显示 HTML/CSS。
-
如果占位符是小写的并且他们输入的值会以大写显示,Lol 用户会感到困惑。
有没有一种方法可以在不将占位符设为大写的情况下将输入值设为大写?
似乎我得到了一个或另一个。我宁愿只使用 CSS(JS 最后的手段)干净地做到这一点。
【问题讨论】:
每个浏览器引擎都有不同的实现来控制placeholder 样式。使用以下内容:
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+)
【讨论】:
input::placeholder { text-transform: none; },因为它得到了很好的支持。详情:developer.mozilla.org/en-US/docs/Web/CSS/::placeholder
我知道你说使用 JS 是最后的手段,但是在这种情况下,它可能更有效和更简单(如果你不使用 JS,你在 fromrm submit 上发布的值不会是大写的)所以这可能会更好需要 CSS:
<input oninput="this.value = this.value.toUpperCase()" placeholder="Enter Drivers License #" />
编辑
有些人一直抱怨编辑值时光标跳到末尾,所以这个稍微扩展的版本应该可以解决这个问题
<input oninput="let p = this.selectionStart; this.value = this.value.toUpperCase();this.setSelectionRange(p, p);" />
【讨论】: