28

カレットの場所にコンテンツを挿入するテキストエリアがあります( Tim Downの回答に感謝します)。ユーザーがボタンを押すとコンテンツが挿入されます。しかし、ボタンを押すと、テキストエリアへのフォーカスが失われるようです。カレットの位置も同じであれば、どうすればそこに焦点を合わせることができますか?との使い方を考えていevt.preventDefault()ました.focusout()。それが役立つ場合。

4

4 に答える 4

55

フォーカスを更新する必要はありません!

(クリックイベントではなく)マウスダウンイベントを処理するようにしてください。mousedownイベントは、別の要素のフォーカスが失われる前に発生します。

mousedownイベントハンドラーでは、イベントのデフォルトの動作を防ぐ必要があります

e.preventDefault(); // on your mousedown event

JS-フィドルデモ

于 2017-04-26T07:34:50.810 に答える
8

フォーカスがフォーカス可能な要素に移動するのを止めても、マウスクリックが通常の動作(clickボタンなど)になるようにすることはできません。ボタンなどのフォーカスをサポートする要素をクリックすると、キーボードフォーカスが取得されます。

適切に行われた場合、プログラムで要素にフォーカスを戻すことができます。うまく行かないと、ページの使いやすさが損なわれる可能性があります。

デモ:JSFiddle

于 2012-08-28T07:54:38.993 に答える
2

ボタンが押されたときにフォーカスを更新する必要があります。

HTMLコード:

<input id="messageBox" autofocus />
<input type="button" id="messageSend" onclick="setFocusToMessageBox()" value="Send" />

Javascriptコード:

<script>
function setFocusToMessageBox(){
    document.getElementById("messageBox").focus();
}
</script>
于 2018-04-01T15:58:11.033 に答える
-1

ボタンクリック機能が終了したときにプログラムでテキスト領域にフォーカスを戻すことで、これを簡単に行うことができます。このようにして、毎回クリックイベントとともにフォーカスを取り戻すことができます。

于 2012-08-28T07:59:02.083 に答える