强制表单文本为小写

Joh*_*ohn 18 html javascript css

input无论用户类型是什么,我如何强制"用户名"文本中的文本为小写?

<div class="register">
   <label for="username">Select username:</label>
</div> 
<div class="registerform">
    <input name="username" class="registerfont" type="text"
           id="username" maxlength="15" style="height:35px; width:300px">
</div>
Run Code Online (Sandbox Code Playgroud)

小智 46

在CSS中:

form input[type="text"] {
    text-transform: lowercase;
}
Run Code Online (Sandbox Code Playgroud)

否则在JS:

var text="this is my text.";
var lowercase=text.toLowerCase();
Run Code Online (Sandbox Code Playgroud)

  • 这只是显示.我认为我们可以假设OP希望*改变*的情况,而不是暂时修改它的外观. (12认同)
  • 这实际上是美学上最好的解决方案,只要将其与提交时的服务器端转换相结合即可.每次用户按下一个键时,接受的答案将短暂闪烁大写字母. (3认同)
  • Upvoting因为数据验证和"修复"应该只在服务器端完成.完全依靠js来评估表单数据会让你自己被黑客攻击.例如,禁用js,可以使用用户名"Admin"(大写A)创建一个帐户,并开始网络钓鱼其他用户.在键入时编辑表单字段也可能导致某些浏览器或亚洲键盘中的光标放置问题,每个字符需要1-3次击键. (2认同)

jch*_*apa 27

你必须使用JavaScript.我在这里有一个例子:http://jsfiddle.net/xCfdS/3/

HTML: <input type="text" id="txt" onkeyup="return forceLower(this);"/>?

使用Javascript:

function forceLower(strInput) 
{
strInput.value=strInput.value.toLowerCase();
}?
Run Code Online (Sandbox Code Playgroud)

  • 这当然也需要在服务器上强制执行. (5认同)
  • @John在服务器上的某个地方,无论是由数据库还是其他东西强制执行都取决于您,但您不能完全依赖客户端脚本,因为它很容易被规避. (4认同)
  • 这很不可思议.首先,用户输入大写字母,然后在keyup上进行转换.我猜是好的 - 直到用户试图选择全部并删除.它只删除最后一个字母.对我的口味来说太糟糕了,而不是生产值得. (2认同)

Mig*_*jal 12

你可以使用某些东西

<input autocapitalize="none" ></input>
Run Code Online (Sandbox Code Playgroud)

它应该在最新的浏览器中工作有关更多详细信息,请查看此链接

  • 这是行不通的:`autocapitalize="none"` 意思是“不自动大写单词/字符”。它并不意味着“禁止使用大写字符”。 (3认同)

JJJ*_*JJJ 9

除了答案评论中提到的问题之外,@fdiv_bug 的答案很好。使用 input 事件而不是 keyup 事件为我解决了这些问题。

\n\n

HTML:

\n\n
<input oninput="this.value=this.value.toLowerCase()"/>\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

JavaScript:

\n\n
element.addEventListener(\'input\',function(){this.value=this.value.toLowerCase()});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n

  • 如果我返回到字符串的任何位置并输入大写字母,光标将传送到字符串的末尾。 (2认同)

Ali*_*our 6

使用jquery假设输入ID是用户名

$(document).ready(function(){
    $("#username").on('change keyup paste',function(){
    $(this).val($(this).val().toLowerCase());
     })
})
Run Code Online (Sandbox Code Playgroud)


mot*_*oto 5

结合大家的一些回答可以简化事情。

  1. 使用 CSS 来避免任何闪烁并用于显示目的。

    input[type="username"] {
      text-transform: lowercase;
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在,因为这仅影响浏览器中文本的显示,所以我们还需要更改输入的值。

  1. 将事件侦听器添加到输入。

    const usernameInput = document.querySelector('input[type="username"]');
    usernameInput.addEventListener("input", function(e){
      e.target.value = e.target.value.toLowerCase();
    });
    
    Run Code Online (Sandbox Code Playgroud)

我们可以像平常一样将其发送到服务器,并且像其他人提到的那样,检查服务器端以确保恶意用户没有向我们发送 UpPPercaSe 输入。