2017-08-28 6 views
0

私は、これは動作しますが、より多くの文字を追加する1つの問題は依然として存在しているのjavascriptカーソルの問題を手動で入力要素に文字を追加するとき

document.querySelector('input'); 
input.value += getChar(); 

DEMO

とHTMLの入力フィールドに文字を追加しています入力のビューポートに収まります。デモで

input.blur(); 
input.focus(); 

このすでに実装されている、しかし、このハックはエッジでは動作しません。結果はキャレットはもう

見ることができないということです私は、この問題を解決するためのハックを見つけました。どのようにビューにキャレットを保持するための任意の提案?

+0

この修正プログラムは、Firefoxのトリックを行いません(私は私のバージョンはいくつかの日前に更新され最新のもの、だと思う)が、表示はまだエッジよりも少ない奇妙です(キャレットが小さな "キャンセル"クロスと重なっているところ) – Kaddath

+0

@Kaddath解決策がある場合は、そのリンクを投稿できますか? Thnx –

+0

私はあなたにもちろん知らせてくれるものを見つけたら) – Kaddath

答えて

1

これは、Firefox、Chrome、Opera、およびEdge(Safariでテストされていない)で動作するものです。

一部はもちろん、一部のブラウザでは役に立たない、そしてテストは古いブラウザのサポートのための属性の存在のためになされるべきであるが、これは動作します:

Firefoxの場合

blur()はChromeで役に立たないが、必要です。

エッジの場合、select()右に移動すると、次の行がテキストの選択を解除します。

function caretIntoView() { 
    input.setSelectionRange(input.value.length, input.value.length); 
    input.blur(); 
    input.focus(); 
    input.select(); 
    input.selectionStart = input.selectionEnd = input.value.length; 
} 

修正フィドル:https://jsfiddle.net/xxk04mn6/7/

+0

これは本当にすべてのブラウザで動作することを確認することができます。 –

関連する問題