2017-10-06 7 views
1

入力の幅が内側の値より短い場合は、値の先頭だけが表示されます。矢印キー(左と右)を使用することで、キャレットを値の隠れた部分に移動できます。その場合、値は入力内でシフトされ、キャレットを囲む値の一部が表示されます。テキスト入力の値のシフトを決定する方法は?

最初の位置から見える部分のピクセル数を確認したいと思います。すべてのキーボードイベントでキャレットの位置を察知せずにこの値を得る簡単な方法はありますか?

答えて

0

要素の値の長さに応じて<input />size属性を設定できます。このような

何か:私は(近似による)文字列の画素の長さを決定するために、この関数を使用

document.getElementById('input').addEventListener('keyup', function(evt){ 
 
\t this.setAttribute('size', evt.target.value.length) 
 
})
<input type="text" name="email" size="5" id="input"/>

+0

残念ながら、私は、入力値のための限られたスペースは、その完全な幅よりはるかに長くすることができています。 –

0

。しかし、ブラウザはテキストのスクロールが異なります。 EDGEは約3文字をスクロールしますが、Chromeは1文字だけをスクロールします。

function getPixelLengthOfString(element, string) { 
 
    var tempNode = document.createElement("span"); 
 
    tempNode.innerHTML = string; 
 
    tempNode.style.fontSize = window.getComputedStyle(element,null).getPropertyValue("font-size"); 
 
    document.body.appendChild(tempNode); 
 
    var stringPixelLength = tempNode.offsetWidth; 
 
    document.body.removeChild(tempNode); 
 
    return stringPixelLength; 
 
} 
 

 
console.log(getPixelLengthOfString(document.querySelector("input.length"), "wmj")); //approximate length of three characters
input.length { 
 
    width: 50px; 
 
}
<input type="text" class="length" value="this has a very long length" />

+0

文字列の長さを計算することは難しいことではありません。必要なのは、値のどの部分が現在入力に表示されているかを判断する方法です。たとえば、あなたのスニペットでは、入力はこの_ has_を表示し、残りは隠れています。右矢印キーを使用して入力内のキャレットを移動して、残りの値を表示することができます(たとえば、_非常にlon_を表示する)が、その値の一部は左側に隠されます。私が必要とするのは、値の隠された部分の長さです(この例では_があります)。 –

+0

文字列のおおよその長さを知っていれば、可視領域がピクセル単位で表示され、キャレット位置を推測できます。 – Mouser

+0

キャレット位置では、値のどの部分が現在入力に表示されているかを判断するには不十分です。 –

関連する問題