简体   繁体   English

启用CapsLock时将输入更改为大写

[英]Change input to Upper Case with CapsLock on

I would just like to know is it possible to change the input automatically to capitalized on a certain input field where the user entered a value with Caps Lock on. 我只想知道是否可以将输入自动更改为capitalized ,即在用户输入了Caps Lock的情况下在某个input字段上使用了大写。

 <input placeholder="Brand Name" style="text-transform: capitalized" type="text" />

Caps On = TEST NAME 大写 =测试名称

Expected: Test Name 预期:测试名称

 <input placeholder="Brand Name" style="text-transform: capitalized" type="text" />

Caps Off = test name 开盖 =测试名称

Default: Test Name 默认值:测试名称

I know some Names looks like Reader Van der Bank where not all the name parts are capitalized, but still would like to know if its possible. 我知道有些名称看起来像Reader Van der Bank ,其中并非所有名称部分都大写,但仍想知道它是否可能。 Thanks 谢谢

Alternative : Think i might be using a php function to transform everything to lowercase and then capitalized. 替代方案:认为我可能正在使用php函数将所有内容都转换为小写,然后大写。

Here is a javascript function to do that, if there is no CSS solution for it. 如果没有CSS解决方案,这是一个JavaScript函数。

 var id = document.getElementById("test"); function change() { var arr = id.value.split(" ").map(function(x) { return x.charAt(0).toUpperCase() + x.slice(1).toLowerCase() }); id.value = arr.join(" "); } id.addEventListener("change", change); id.addEventListener("keyup", change); 
 <input placeholder="Brand Name" id="test" type="text" /> 

For multiple elements with class test 对于具有类test多个元素

 var elements = document.getElementsByClassName("test"); function change() { var arr = this.value.split(" ").map(function(x) { return x.charAt(0).toUpperCase() + x.slice(1).toLowerCase() }); this.value = arr.join(" "); } for (var i = 0; i < elements.length; i++) { elements[i].addEventListener("change", change); elements[i].addEventListener("keyup", change); } 
 <input placeholder="Brand Name" class="test" type="text" /> <input placeholder="Brand Name" class="test" type="text" /> <input placeholder="Brand Name" class="test" type="text" /> <input placeholder="Brand Name" class="test" type="text" /> <input placeholder="Brand Name" class="test" type="text" /> <input placeholder="Brand Name" class="test" type="text" /> 

style="text-transform: capitalize"

(Question was edited. New Answer.) (问题已编辑。新答案。)

Give your input an id, for this example let's say it's called "theInputId". 给您的输入一个ID,在本例中,我们将其称为“ theInputId”。 Then add an onkeypress event to it also and call the function script I've listed below. 然后也向它添加一个onkeypress事件,并调用下面列出的函数脚本。

<input placeholder="Brand Name" style="text-transform: capitalized" 
 type="text" id="theInputId" onkeypress="capsLock(event)">


<script>
//Script to check if Caps Lock is on.
function capLock(e){
kc = e.keyCode?e.keyCode:e.which;
sk = e.shiftKey?e.shiftKey:((kc == 16)?true:false);
if(((kc >= 65 && kc <= 90) && !sk)||((kc >= 97 && kc <= 122) && sk)){
document.getElementById('theInputId').style.textTransform = 'lowercase'
document.getElementById('theInputId').style.textTransform = 'capitalize'
}
}
</script>

Do you want to enter all the text capitalized in the input? 是否要输入所有在输入中大写的文本? then u can use text- transform:uppercase in css and if u want to change it while typing you can use toUpperCase() on keyup of that input. 那么您可以在CSS中使用text- transform:uppercase ,如果要在键入时进行更改,则可以在该输入的keyup上使用toUpperCase()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM