Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to set the width of a jQuery autocomplete combobox?

I am using this jQuery UI combobox autocomplete control out of the box off the jQuery UI website:

My issue is that I have multiple comboboxes on a page, and I want them to have different widths for each one.

I can change the width for ALL of them by adding this CSS:

 .ui-autocomplete-input  {      width: 300px;  } 

but I can't figure out a way to change the width on just one of them.

like image 267
leora Avatar asked Apr 22 '10 06:04

leora


People also ask

How to set width of jQuery autocomplete?

$('. ui-autocomplete:last'). css('width', $('#currentControlID'). width() );

How does autocomplete work in jquery?

The autocomplete (options) method declares that an HTML <input> element must be managed as an input field that will be displayed above a list of suggestions. The options parameter is an object that specifies the behavior of the list of suggestions when the user is typing in the input field.


1 Answers

A simple

$('.ui-autocomplete-input').css('width','300px') 

works (I tried it on the linked page with Firebug) to change the first one on the page.

You can do something like:

$($('.ui-autocomplete-input')[N]).css('width','300px') #N is the nth box on the page 

To change the Nth one.

To find a specific one by a characteristic, you could do it in many ways.

Find it by the first "option" (in this example "asp"):

$('.ui-autocomplete-input').map(function(){if ($(this).parent().children()[1].options[0].text == 'asp'){ $(this).css('width','300px'); return false;} }) 

Find it by its "label":

$('.ui-autocomplete-input').map(function(){if ($($(this).parent().children()[0]).text() == "Your preferred programming language: "){ $(this).css('width','300px'); return false;}}) 

etc...

I'll update if you have an idea of how you want to find your combobox.

EDIT FOR COMMENT

oo, that makes it even easier. From the example source you linked to, the HTML is already wrapped in a div:

<div class="ui-widget" id="uniqueID">     <label>Your preferred programming language: </label>     <select>         <option value="a">asp</option>         <option value="c">c</option>         <option value="cpp">c++</option>         <option value="cf">coldfusion</option>         <option value="g">groovy</option>         <option value="h">haskell</option>         <option value="j">java</option>         <option value="js">javascript</option>         <option value="p1">perl</option>         <option value="p2">php</option>         <option value="p3">python</option>         <option value="r">ruby</option>         <option value="s">scala</option>     </select> </div> 

I would give that div a unique id then:

$('#uniqueID > input.ui-autocomplete-input').css('width', '300px') 

That selects child elements of your div that are inputs with a class of "ui-autocomplete-input".

like image 98
Mark Avatar answered Sep 30 '22 21:09

Mark