だから、私はinput
を持っていて、その内容にそのwidth
を調整したい。今のところ、私はこのようなコードを使用します。これは、デスクトップ用OK作品HTML入力内のテキストの正確な幅を取得する方法は?
var adjustWidthToContent = function()
{
\t var inputLength = $(this).val().length;
\t // the minimum 1em width allows to start typing when the input is empty
\t $(this).width(Math.max(1, inputLength*0.7) + "em");
};
$("input").on("input",adjustWidthToContent);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type='text' />
を、私はこれをより正確にしたいと思います(0.7係数が一つの「ハック」と実際の幅を計算するものは、異なるシンボルについて明らかに異なる)。複数の記号を入力すると、ギャップが拡大することがわかります。固定は、私が余分なスペースを必要としないモバイルインタフェースに特に役に立ちます。input
要素の空の部分が占有します。
明らかに、inputLength
以外のものを使用する必要があります。 input
内のテキストの「実際の」幅を取得するにはどうすればよいですか?
PSは、ここでの提案に基づいて、私が使用したものです:
$.fn.textWidth = function() {
\t if (!$.fn.textWidth.fakeEl)
\t \t $.fn.textWidth.fakeEl = $('<span>').hide().appendTo(document.body);
\t $.fn.textWidth.fakeEl.text(this.val() || this.text()).css('font', this.css('font'));
\t return $.fn.textWidth.fakeEl.width();
};
var adjustWidthToContent = function()
{
\t var textWidth = jQuery(this).textWidth();
\t var defaultWidth = 20;
\t $(this).width((textWidth || defaultWidth) + 'px');
};
$("input").on("input",adjustWidthToContent).trigger("input");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<input type='text' />
PPSこれはしかし、適用可能なので、いくつかのテキストフィールドであることをadjustWidthToContent
ためのいくつかの工夫が必要ありません。
お試しください。http://stackoverflow.com/questions/4663716/resize-input-to-fit-its-content – Passersby
一言:**モノスペース**。 – zer00ne