如何自动将文本框设置为大写?

ybc*_*126 114 html

我使用以下样式属性将用户输入设置为大写,以便当用户开始在文本框中键入时railway,应该将其更改为大写字母,RAILWAY 而无需用户按下Caps-lock按钮.

这是我用于输入的代码:

<input type = "text" class = "normal" name = "Name" size = "20" maxlength = "20"> <img src="../images/tickmark.gif" border="0" style='text-transform:uppercase'/>
Run Code Online (Sandbox Code Playgroud)

但是我没有通过使用此属性获得所需的输出.

fre*_*ler 237

您已将该style属性放在<img>标记上,而不是<input>.

在属性名称和值之间放置空格也不是一个好主意.

<input type="text" class="normal" 
       name="Name" size="20" maxlength="20" 
       style="text-transform:uppercase" /> 
<img src="../images/tickmark.gif" border="0" />
Run Code Online (Sandbox Code Playgroud)

请注意,此转换纯粹是可视化的,并不会更改POST中发送的文本.

  • 请注意,如果您通过POST发送此数据,它会在您键入它时发送它,而不是它在屏幕上显示的方式. (57认同)
  • 这不是一个完整的解决方案,因为占位符现在是大写的(在大多数情况下不应该是).除了使用JavaScript之外别无他法. (7认同)
  • @David,见上一条评论.变换纯粹是**视觉.它不会更改发送回服务器的基础文本的大小写.如果要以大写形式保存文本,则必须在保存之前在服务器上对其进行转换 (6认同)

Yeh*_*rtz 41

我认为确保以大写形式发布的最强大的解决方案是使用oninput方法内联,如:

<input oninput="this.value = this.value.toUpperCase()" />
Run Code Online (Sandbox Code Playgroud)

  • 不适用于输入型电子邮件 (2认同)

Bur*_*kak 35

text-transformation:uppercase样式的答案不会在提交时将大写数据发送到服务器 - 您可能会期望什么.你可以这样做:

对于您的输入HTML使用onkeydown:

<input name="yourInput" onkeydown="upperCaseF(this)"/>
Run Code Online (Sandbox Code Playgroud)

在您的JavaScript中:

function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}
Run Code Online (Sandbox Code Playgroud)

随着upperCaseF()对每个键按下功能,输入的值会变成它的大写形式.

我还添加了1ms的延迟,以便在发生keydown事件后触发功能代码块.

  • 使用"输入事件"的想法,将此属性添加到`input`元素似乎运行良好:`oninput ="this.value = this.value.toUpperCase()"` (7认同)
  • 可以使用[input`事件](https://www.w3schools.com/jsref/event_oninput.asp)代替`keydown`并摆脱`setTimeout`解决方法. (4认同)
  • @JonathanSafa除了上面的`text-transform:uppercase` css样式解决方案之外,还使用它来使输入始终显示为大写 (3认同)
  • 当用户编辑现有文本并将光标放在末尾以外的位置时,光标将在键入每个字符时跳转到末尾。有没有办法保留光标位置并将文本转换为大写? (2认同)

tom*_*cco 16

第一个答案的问题是占位符也是大写的.如果您只想将输入设置为大写,请使用以下解决方案.

为了只选择非空的输入元素,在元素上放置必需的属性:

<input type="text" id="name-input" placeholder="Enter symbol" required="required" />
Run Code Online (Sandbox Code Playgroud)

现在,为了选择它,使用:valid伪元素:

#name-input:valid { text-transform: uppercase; }
Run Code Online (Sandbox Code Playgroud)

这样,您将只输入大写的字符.

  • 我的解决方案仅适用于所需的文本输入字段.如果你试图概括它,它将无法正常工作.它回答了上面的问题.你可能会问一个不同的问题. (6认同)
  • 这个答案不起作用,也没有意义.为什么仅在输入有效时选择会影响输入文本而不影响占位符?我想如果空白不是有效值,那么这可能是偶然的.我在这里使用了答案:http://stackoverflow.com/questions/25180140/make-input-value-uppercase-in-css-without-affecting-the-placeholder (4认同)

小智 9

尝试

<input type="text" class="normal" 
       style="text-transform:uppercase" 
       name="Name" size="20" maxlength="20"> 
 <img src="../images/tickmark.gif" border="0"/>
Run Code Online (Sandbox Code Playgroud)

而不是图像将样式标记放在输入上,因为您在输入上而不是在图像上写入

  • 但是,这也使占位符文本大写. (3认同)

Muk*_*und 5

设置以下样式以将所有文本框设置为大写

input {text-transform: uppercase;}
Run Code Online (Sandbox Code Playgroud)