How to Adjust the Width of Input Field Automatically using JavaScript ? - GeeksforGeeks

16 Apr, 2020
The HTML <input> element is used to create interactive controls for web-based forms in order to accept data from the user. The <input> element is one of the most powerful and complex in all of HTML due to the sheer number of combinations of input types and attributes. The HTML <input> width attribute is used to specify the width of the element.
To increase the width of <input> element dynamically.Approach 1:
The onkeypress event occurs when the user presses any key.
Select the width attribute of an element.
Make it equal to the length of the value of the input field by this.value.length
<input type="text" onkeypress="myFunction()"> 
Here, we select the <input> element and add a method to it which occurs when a key is pressed. This method selects and updates the value of the width property dynamically.
HTML Code:
<!DOCTYPE html> <html> <head>     <title> How to adjust width of an input field to its input?</title> </head> <body>     <form method="post" action="">        <label for="username">Input text</label>        <input type="text" id="textbox"         name="textbox" placeholder="Welcome"        onkeypress="this.style.width =             ((this.value.length + 1) * 8) + 'px';"        id="input"/>    </form></body> </html>                 
You can also write a JavaScript function to check the length of your string on input change, then adjust the width of the input based on the number of chars * character width.
Alternative JavaScript Code:
$('input').css('width', ((  input.getAttribute('placeholder').length + 1) * 8) + 'px');$("input").focusout(function() {    if (this.value.length > 0) {        this.style.width =           ((this.value.length + 1) * 8) + 'px';    } else {        this.style.width =           ((this.getAttribute('placeholder').length + 1) * 8)        + 'px';    }});
Output:
Approach 2: Use jQuery keypress() event in combination with String.fromCharCode(e.which) to get the pressed character. Hence, we can calculate the width of the input element.
jQuery Code:
$('input[type="text"]').keypress(function(e) {    if (e.which !== 0 && e.charCode !== 0) {           // Only characters        var c = String.fromCharCode(e.keyCode|e.charCode);        $span = $(this).siblings('span').first();          // The hidden span takes         $span.text($(this).val() + c) ;           // The value of the input        $inputSize = $span.width() ;           // Apply width of the span to the input        $(this).css("width", $inputSize) ;     }}) ;
Output:
Browser Compatibility:
Chrome: Yes
Firefox: Yes (63.0)
Edge: Yes
Internet Explorer: Yes
Opera: Yes
Safari: Yes
JavaScript-Misc
Picked
JavaScript
Web Technologies
Web technologies Questions
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Convert a string to an integer in JavaScript
Difference between var, let and const keywords in JavaScript
Differences between Functional Components and Class Components in React
How to append HTML code to a div using JavaScript ?
How to Open URL in New Tab using JavaScript ?
Roadmap to Become a Web Developer in 2022
Installation of Node.js on Linux
How to fetch data from an API in ReactJS ?
Top 10 Projects For Beginners To Practice HTML and CSS Skills
How to insert spaces/tabs in text using HTML/CSS?