3

Capslockがオンになっているかどうかを確認するための次のコードは、「onkeypress」イベントで正常に機能します。

しかし、私は「オンフォーカス」イベントのためにそれが欲しいです。コントロールの「onkeypress」を「onfocus」に置き換えてみましたが、うまくいきません。

何か助けはありますか?(javascriptまたはJqueryのいずれかで)

 <script type="text/javascript" language="Javascript">
    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('divMayus').style.visibility = 'visible';
        else
            document.getElementById('divMayus').style.visibility = 'hidden';
    }
</script>

<input type="text" name="txtuname" />
<input type="password" name="txtPassword" onkeypress="capLock(event)" />
<div id="divMayus" style="visibility:hidden">Caps Lock is on.</div> 
4

3 に答える 3

5

capslockstateと呼ばれるjQueryプラグインがあり、caps Lockキーの状態を追跡し、必要に応じてその情報を使用できるようにします。

ページ全体の状態を監視し、目的の要素がフォーカスを取得したときに状態を取得できます。

また、キーの押下を監視することに基づいていますが、下位ASCII文字に限定されず、CapsLockキー自体が押されているような状況を処理します。

あなたの状況は次のようになります:

<script src="{path-to}/jquery-capslockstate.js"></script>
<script>
    $(document).ready(function() {
        $(window).capslockstate();

        $(window).bind("capsOn", function(event) {
            if ($("#txtPassword:focus").length > 0) {
                document.getElementById('divMayus').style.visibility = 'visible';
            }
        });
        $(window).bind("capsOff capsUnknown", function(event) {
            document.getElementById('divMayus').style.visibility = 'hidden';
        });
        $("#txtPassword").bind("focusout", function(event) {
            document.getElementById('divMayus').style.visibility = 'hidden';
        });
        $("#txtPassword").bind("focusin", function(event) {
            if ($(window).capslockstate("state") === true) {
                document.getElementById('divMayus').style.visibility = 'visible';
            }
        });
    });
</script>

<input type="text" name="txtuname" />
<input type="password" name="txtPassword" id="txtPassword" />
<div id="divMayus" style="visibility:hidden">Caps Lock is on.</div>

重要なビットをjQuery化しただけで、さらに多くのことができることに注意してください。

于 2012-12-13T13:15:18.557 に答える
1

残念ながらそうではありません-イベントオブジェクトのkeyCodeプロパティは、キーベースのイベントでのみ送信されます(明らかな理由で)。そのため、onfocus、onclickなどでは機能しません。

それを行う他のJavaScriptの方法はありません-フラッシュを使用する場合の潜在的な解決策はありますが-しかし、それはあなたの要件に対してやややり過ぎのようです...

于 2012-08-09T10:49:29.173 に答える
0

CapsLockonfocusを検出することは不可能のようですこれはあなたがこれを訪問するのを助けるかもしれないと思います

http://jaspreetchahal.org/jquery-caps-lock-detection-plugin/

于 2012-08-09T12:05:20.787 に答える