如何防止用户使用大写锁定键进行输入?

7

我不太喜欢使用大写字母输入的人。除了让人反感之外,它还破坏了整个应用程序的美观。我想知道如何防止用户用大写锁定键输入所有字符。由于特殊名称和缩写词,我不能强制将所有文本转换为小写。那么我应该使用什么逻辑呢?


8
如果你如此不喜欢大写字母,为什么要给我们带来一个全是大写字母的问题? - High Performance Mark
我认为你做不到,因为算法必须理解所有用户可能输入的特殊名称和缩写。强制标题大写或句子首字母大写很容易实现,但这会破坏某些特定名称(如McLaren)或类似名称的人。也许可以使用允许缩写的白名单。 - Oliver
@HighPerformanceMark 仅供测试 :) - quosal
3个回答

10

如果大写字母的数量超过小写字母的数量30个以上,礼貌地拒绝他们的帖子,并解释原因。

不要在FORTRAN论坛上实施此规则。


3
你可以检查单词中有多少个大写字符,然后进行限制。上面有人举了“McLaren”这样的名称的例子,这种方法允许这样做。缺点是,如果你把最大值设为3,“LOL”仍然是可能的。
更好的方法是取单词“McLaren”的长度(为7),然后按比例限制,比如20%。这样可以让更长的单词拥有更多的大写字母,但不会全都是大写。(虽然无法完全防止,但这将使它们更难以实现。)
有趣的事实是,今天是国际大写锁定键日。 :)

0
keypress: function(e) {
    var ev = e ? e : window.event;
    if (!ev) {
        return;
    }
    var targ = ev.target ? ev.target : ev.srcElement;
    // get key pressed
    var which = -1;
    if (ev.which) {
        which = ev.which;
    } else if (ev.keyCode) {
        which = ev.keyCode;
    }
    // get shift status
    var shift_status = false;
    if (ev.shiftKey) {
        shift_status = ev.shiftKey;
    } else if (ev.modifiers) {
        shift_status = !!(ev.modifiers & 4);
    }

    // At this point, you have the ASCII code in "which", 
    // and shift_status is true if the shift key is pressed
}

来源 --http://24ways.org/2007/capturing-caps-lock


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接