2012-06-28 35 views
7

我不太喜歡用Caps Lock寫的人。此外,厭惡,它會損害整個應用程序。我想知道如何防止用戶使用大寫鎖定寫入所有字符。由於特殊的名稱和縮寫,我不能強制所有文本變爲小寫。我應該使用什麼邏輯?如何防止用戶使用大寫字母鎖定?

+8

如果你這麼不喜歡大寫字母,你爲什麼會對我們造成一個全大寫的問題? –

+0

我不認爲你可以,因爲算法必須理解用戶可能鍵入的所有特殊名稱和縮寫。很容易強制標題的大寫,或大寫字母,但這些會打破具有特定名稱(邁凱輪)或類似的人。也許你可以使用允許縮寫的白名單。 – Oliver

+0

@HighPerformanceMark僅用於測試:) – quosal

回答

9

有禮貌地拒絕他們的帖子 - 解釋爲什麼 - 如果大寫字母的數量超過了小寫字母的數量超過30個,比方說。

不要在FORTRAN論壇實現這個

+1

FORTRAN的+1。 – Oliver

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

3

你可以檢查大寫字母有多少是在一個字,然後限制。上面有人給出了'邁凱輪'這樣的名字的例子,這樣就可以做到這一點。不利的一面是,如果你將最大值設置爲3,那麼'LOL'將是可能的。 要走的路是將'邁凱輪'這個單詞的長度設爲7,然後將其限制在20%的百分比上,這樣可以讓更長的單詞有更多的大寫字母,但不是全部大寫。 (沒有什麼會完全阻止它,但這會讓它更難。)

有趣的是,今天是國際大寫鎖定日。 :)

+0

+1國際大寫鎖定日 - LOL – sajawikio