2011-11-13 12 views
3

文字の幅によって文字が追加されるたびに拡大するテキストボックスを作成しようとしています。これが私が試みていることです。それは動作しません。ヒントがあれば、共有してください!文字の幅に基づいてテキストボックスを拡大する

はJavaScript:

function MakeWidth(el) { 
     el.style.width = parseFloat(el.value.clientWidth) } 

HTML:

<input id="Test" type="text" style="width: 10px;" onkeyup="MakeWidth(this)"/> 

答えて

7

size & lengthの代わりに、あなたのニーズに適したものでなければならない

http://jsfiddle.net/eVd9b/5/

function MakeWidth(el) { 
    el.size = parseInt(el.value.length); 
} 

& width

clientWidth試してみてください。

+0

最初の数文字が途切れるのはなぜですか? Firefoxで試した。 – Matthew

+0

私は確信していませんが、Chrome 15とOperaでうまく動作します。 Try [monospace](http://jsfiddle.net/eVd9b/6/)font –

+0

しばらくテストした後、この方法では、 'W'と 'i'の幅がモノスペース以外のフォントで異なることは分かりません。私はそうする解決策を探しています。 – Mike

1

あなたは、必ずしも各文字の幅を知らないので、少しトリッキーです。あなたが入力した文字で隠しdivを作成し、その幅をつかんで、テキストボックスの幅に追加して、隠れたdivを破棄してみるという方法があります。

+1

。またはモノスペースフォントを使用してください。 –

3

size属性を使用すると便利です。

<input id="Test" type="text" size="1" onkeyup="MakeWidth(this)"/> 
<script> 
function MakeWidth(el) { 
     el.size = el.value.length 

} 
</script> 
関連する問題