0

ユーザーが何をしていても、常にフォーカスする必要のあるテキストフィールドがあります。

これを行うことにより、ロード時にテキストフィールドをアクティブにしました。

<html>
<head>
    < script type ="text/javascript" src ="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></ script>
    < script type ="text/javascript">
    $( function () {
        $( "#myTextBox2" ).focus();
    });
    </ script>
</head>
< body>
    < div>
        < input type ="text" id ="myTextBox">
        < input type ="text" id ="myTextBox2"onblur="var that= this; setTimeout(function() { that.focus(); }, 0);">
    </ div>
</ body>
</html>

上記のコードを試しているときにタブボタンを押すと、myTextBox2からタブで移動できますが、マウスでmyTextBoxをクリックすることはできません(これは正しいです)。

ユーザーがいずれかのボタンを押すか、サイトの任意の場所をクリックした場合でも、テキストフィールドを選択してフォーカスを合わせる必要があります。これを完全に実施するにはどうすればよいですか?

編集:これを私のコードのヘッダーとSvenによる回答に追加すると、うまくいくようです:

    $(document).keydown(function(objEvent) {
        if (objEvent.keyCode == 9) {  //tab pressed
            objEvent.preventDefault(); // stops its action
       }
    })

クレジット: javascriptでタブキーをロックしますか?

4

2 に答える 2

4

次のコードを使用すると、常にテキスト フィールドにフォーカスを保つことができます。

HTML:

<form>
    <input type="text" name="name" id="focus" />
    <input type="text" name="name2" />
    <input type="text" name="name3" />
    <input type="text" name="name4" />
</form>

JS:

$(document).ready(function() {
    $("#focus").focus().bind('blur', function() {
        $(this).focus();            
    }); 

    $("html").click(function() {
        $("#focus").val($("#focus").val()).focus();
    });  

    //disable the tab key
    $(document).keydown(function(objEvent) {
        if (objEvent.keyCode == 9) {  //tab pressed
            objEvent.preventDefault(); // stops its action
       }
    })      
});​

JsFiddle の例:クリック!

フォーカスされたフィールドにカーソルを配置することを強制/トリガーするには、テキストフィールドの値を置き換える必要がありました。

お役に立てれば。

于 2012-12-20T10:23:36.537 に答える
0

私は次のようにします:

1)ページの読み込み時に、要素を自動的にフォーカスします(すでに行っています)

2) #myTextBox2 でキー プレス イベント ハンドラーを作成し、「実際の」入力文字 (英数字、ドット、キャレット、およびユーザーがそのフィールドに実際に入力できるすべてのもの) を除くすべての文字を破棄します。

3) #myTextBox2 で onblur イベント ハンドラーを作成し、実際には同じ入力に焦点を当てます (既に作成済みです。スクリプト内のスクリプトに配置することをお勧めします)。

4) 完全を期すために、入力がフォーカスされていることを X マイクロ秒ごとにチェックする Interval をページに配置します。そうでない場合は、入力をフォーカスします。これはオプションです。

いずれにせよ、関数呼び出しが入力がフォーカスされていないことを実際に検出し、フォーカスする必要がある場合、フォーカスは入力の先頭に向けられるため、ユーザー入力は最初からやり直されることに注意してください。入力フィールドの。入力内容は破棄されませんが、ユーザーは再フォーカス後に入力の最後にジャンプする必要があります。

イベント ハンドラーの作成についてサポートが必要な場合は、お問い合わせください。

于 2012-12-20T10:20:51.193 に答える