首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何自动将文本框设置为大写?

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

Stack Overflow用户
提问于 2012-06-19 19:31:31
回答 14查看 373K关注 0票数 163

我使用以下样式属性将用户输入设置为大写,这样当用户开始在文本框中输入时,例如railway,它应该被更改为大写字母,如RAILWAY,而用户不必按下Caps-lock按钮。

这是我用于输入的代码:

代码语言:javascript
运行
复制
<input type = "text" class = "normal" name = "Name" size = "20" maxlength = "20"> <img src="../images/tickmark.gif" border="0" style='text-transform:uppercase'/>

但是我没有通过使用这个属性得到想要的输出。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2012-06-19 19:35:20

您已经将style属性放在了<img>标记上,而不是<input>上。

在属性名称和值之间使用空格也不是一个好主意……

代码语言:javascript
运行
复制
<input type="text" class="normal" 
       name="Name" size="20" maxlength="20" 
       style="text-transform:uppercase" /> 
<img src="../images/tickmark.gif" border="0" />

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

票数 313
EN

Stack Overflow用户

发布于 2018-04-19 00:36:46

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

代码语言:javascript
运行
复制
<input oninput="this.value = this.value.toUpperCase()" />

编辑

有些人一直抱怨在编辑值时光标会跳到末尾,所以这个略微扩展的版本应该可以解决这个问题

代码语言:javascript
运行
复制
<input oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" />

票数 94
EN

Stack Overflow用户

发布于 2016-06-03 22:44:59

使用text-transformation:uppercase样式的答案不会在提交时将升序数据发送到服务器-这是您可能预期的。你可以这样做:

对于您的输入HTML,使用onkeydown:

代码语言:javascript
运行
复制
<input name="yourInput" onkeydown="upperCaseF(this)"/>

在您的JavaScript中:

代码语言:javascript
运行
复制
function upperCaseF(a){
    setTimeout(function(){
        a.value = a.value.toUpperCase();
    }, 1);
}

在每次按下键时使用upperCaseF()函数,输入值将转换为大写形式。

我还添加了1毫秒的延迟,以便功能代码块在按键事件发生后触发。

更新

根据Dinei的建议,您可以使用oninput event而不是onkeydown并摆脱setTimeout

对于您的输入HTML,请使用oninput:

代码语言:javascript
运行
复制
<input name="yourInput" oninput="this.value = this.value.toUpperCase()"/>
票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11100041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档