Michael'ın cevabına dayanarak, jQuery kullanarak kendi versiyonumu oluşturdum. Bence burada çoğu cevabın daha temiz / kısa bir versiyonu ve işi bitirmiş gibi görünüyor.
Ben girdi metni yazmak için bir açıklık kullanarak genişliği sonra almak burada çoğu insanla aynı şeyi yapıyorum. Eylemler sırasında Sonra genişliğini kuruyorum keyup
ve blur
denir.
İşte çalışan bir kodlama . Bu kod alanı, bunun birden çok giriş alanı ile nasıl kullanılabileceğini gösterir.
HTML Yapısı:
<input type="text" class="plain-field" placeholder="Full Name">
<span style="display: none;"></span>
jQuery:
function resizeInputs($text) {
var text = $text.val().replace(/\s+/g, ' '),
placeholder = $text.attr('placeholder'),
span = $text.next('span');
span.text(placeholder);
var width = span.width();
if(text !== '') {
span.text(text);
var width = span.width();
}
$text.css('width', width + 5);
};
Yukarıdaki fonksiyon girdi değerini alır, fazladan boşlukları keser ve genişliği elde etmek için metni açıklığa ayarlar. Metin yoksa, bunun yerine yer tutucuyu alır ve bunu yayılma alanına girer. Metni yayılma alanına girdikten sonra girişin genişliğini ayarlar. + 5
Genişliğine girdi Kenar Tarayıcıda bir nebze kesti olur çünkü olmadan olmasıdır.
$('.plain-field').each(function() {
var $text = $(this);
resizeInputs($text);
});
$('.plain-field').on('keyup blur', function() {
var $text = $(this);
resizeInputs($text);
});
$('.plain-field').on('blur', function() {
var $text = $(this).val().replace(/\s+/g, ' ');
$(this).val($text);
});
Eğer bu iyileştirilebilseydi, bana bulabileceğim en temiz çözüm olduğu için lütfen bildirin.