Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery - resizing form input based on value's width?

Is it possible to get input's value width and resize the input dynamically so the value will fit?

Here's an example:

http://jsfiddle.net/bzBdX/2/

like image 605
Wordpressor Avatar asked Feb 17 '12 13:02

Wordpressor


2 Answers

Here is the jQuery code :

$('input').each(function(){
var value = $(this).val();
var size  = value.length;
// playing with the size attribute
//$(this).attr('size',size);

// playing css width
size = size*2; // average width of a char
$(this).css('width',size*3);

})​;

http://jsfiddle.net/bzBdX/7/

like image 158
David Laberge Avatar answered Nov 14 '22 15:11

David Laberge


I have a jQuery plugin on GitHub: https://github.com/MartinF/jQuery.Autosize.Input

It mirrors the value of the input so it can calculate the actual length instead of guessing or other approaches mentioned.

You can see an live example here: http://jsfiddle.net/jw9oqz0e/

Example:

<input type="text" value="" placeholder="Autosize" data-autosize-input='{ "space": 40 }' />

input[type="data-autosize-input"] {
  width: 90px;
  min-width: 90px;
  max-width: 300px;
  transition: width 0.25s;    
}

You just use css to set min/max-width and use a transition on the width if you want a nice effect.

You can specify the space / distance to the end as the value in json notation for the data-autosize-input attribute on the input element.

Of course you can also just initialize it using jQuery

$("selector").autosizeInput();
like image 11
MartinF Avatar answered Nov 14 '22 14:11

MartinF