ホームページ >ウェブフロントエンド >jsチュートリアル >プログラムでキーボード キャレットをテキスト ボックスに配置するにはどうすればよいですか?

プログラムでキーボード キャレットをテキスト ボックスに配置するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-03 01:17:14960ブラウズ

How Can I Programmatically Position the Keyboard Caret in a Textbox?

テキストボックス内でキーボード キャレットを配置するためのテクニック

キーボード キャレットをテキストボックス内の特定の場所に移動すると、ユーザーの操作と編集が強化されます。効率。これを実現するために、さまざまな方法が利用可能です。

汎用キャレット位置決め関数

Josh Stodola の記事から抜粋した次の関数は、キャレット位置を設定するための多用途のソリューションを提供します。テキストボックスとテキストエリアの両方:

function setCaretPosition(elemId, caretPos) {
    var elem = document.getElementById(elemId);

    if (elem != null) {
        if (elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        } else {
            if (elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            } else
                elem.focus();
        }
    }
}

この関数は 2 つのパラメータを取ります:ターゲット要素と目的のキャレット位置。キャレット位置として 0 を渡すとテキストの先頭に設定され、要素の値の長さを超えると末尾に配置されます。

使用例

提供された例は、キーボード キャレットがメッセージを受け取ったときに、ページ上のすべてのテキストエリアの最後に強制的にジャンプする方法を示しています。 focus:

function setTextAreasOnFocus() {
    var textAreas = document.getElementsByTagName('textarea');

    for (var i = 0; i < textAreas.length; i++) {
        textAreas[i].onfocus = function() {
            setCaretPosition(this.id, this.value.length);
        }
    }

    textAreas = null;
}

addLoadEvent(setTextAreasOnFocus);

このコードは、フォーカスを受け取るとすべてのテキストエリアの最後にキャレットを効果的に配置し、テキストの編集とフォームの入力を容易にします。

以上がプログラムでキーボード キャレットをテキスト ボックスに配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。