2016-11-06 5 views
0

私は入力のような自動サイズ変更をしようとしています。ユーザーが入力するときのように、入力は入力内の値に合わせて自動的に調整されます私はそれを正しいものにするか、働くことができないようです。任意のアイデアは、助けてください?入力の値の長さに対応する入力の幅を調整する

$(document).ready(function(){ 
 
    $('input').on('input',function(){ 
 
    $(this).css('width',$(this).width()+$(this).val().length); 
 
    }); 
 
});
input{border:1px solid red;width:30px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 

 
<input type="text">

+0

あなたの現在のコードは間違いなく入力の幅を変えているが、私はそれを取る、あなたが好きなどのようにそれを変更しないのですか?おそらく、あなたはそれがどのようになりたいか教えてください。 –

+0

私は入力の幅を自動的にユーザーの入力として調整したい、入力の幅は入力の値の長さに対応する必要がありますので、値には長い文字列が含まれます。 –

答えて

-1

それは多分30px緩衝液で、同じように広い、必要であるためにあなたの目標であれば、問題はあなたがだ幅に毎回を追加することなく、それをゼロから再計算する。また、文字の幅がどれくらいあるかを知っていれば助けになるでしょう。おそらく、フォントサイズを特に設定したり、別の隠し要素を使ってレンダリングされたテキストの幅を測定したりするのが最も良いでしょう。ここで私はそのためのspanを使用します。

$(document).ready(function(){ 
 
    $('input').on('input',function(){ 
 
    var $this = $(this); 
 
    // Get the value 
 
    var val = $this.val(); 
 
    
 
    // Put it in the hidden span using the same font information 
 
    var $hidden = $(".hidden"); 
 
    $hidden.text(val); 
 
    
 
    // Set the input to the span's width plus a buffer 
 
    $this.css('width', $hidden.width() + 30); 
 
    }); 
 
});
input { 
 
    border:1px solid red; 
 
    font-size: 14px; 
 
    width:30px; 
 
} 
 
.hidden { 
 
    font-size: 14px; 
 
    display: none; 
 
}
<input type="text"> 
 
<span class="hidden"></span> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

...これは「役に立たない」とはどういうことでしょうか? –

2

私はこのケースでcontenteditable-spanを使用することをお勧めし、私はそれが役に立てば幸い。

#test{border:1px solid red;width:30px;}
<span id="test" contenteditable>I'm trying to make an auto resize like input</span>

+1

私はその考えが好きです。 –

+0

私はアイデアが好きですが、私の要求として、私はスパンではない入力を好みます。 –

関連する問題