我使用以下样式属性将用户输入设置为大写,这样当用户开始在文本框中输入时,例如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'/>但是我没有通过使用这个属性得到想要的输出。
发布于 2012-06-19 19:35:20
您已经将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" />请注意,此转换是纯可视化的,并且不会更改在POST中发送的文本。
发布于 2018-04-19 00:36:46
我认为确保它以大写形式发布的最健壮的解决方案是使用oninput方法内联,比如:
<input oninput="this.value = this.value.toUpperCase()" />
编辑
有些人一直抱怨在编辑值时光标会跳到末尾,所以这个略微扩展的版本应该可以解决这个问题
<input oninput="let p=this.selectionStart;this.value=this.value.toUpperCase();this.setSelectionRange(p, p);" />
发布于 2016-06-03 22:44:59
使用text-transformation:uppercase样式的答案不会在提交时将升序数据发送到服务器-这是您可能预期的。你可以这样做:
对于您的输入HTML,使用onkeydown:
<input name="yourInput" onkeydown="upperCaseF(this)"/>在您的JavaScript中:
function upperCaseF(a){
setTimeout(function(){
a.value = a.value.toUpperCase();
}, 1);
}在每次按下键时使用upperCaseF()函数,输入值将转换为大写形式。
我还添加了1毫秒的延迟,以便功能代码块在按键事件发生后触发。
更新
根据Dinei的建议,您可以使用oninput event而不是onkeydown并摆脱setTimeout。
对于您的输入HTML,请使用oninput:
<input name="yourInput" oninput="this.value = this.value.toUpperCase()"/>https://stackoverflow.com/questions/11100041
复制相似问题