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.
$('. ui-autocomplete:last'). css('width', $('#currentControlID'). width() );
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.
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".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With