I'm trying to use the jQuery UI autocomplete plugin ( click to see the jQuery UI autocomplete plugin demo page )
I use a list of objects as a data source, as shown below:
var availableTags = [ {label: "Sao Paulo", value: "SP"}, {label: "Sorocaba", value: "SO"}, {label: "Paulinia", value: "PA"}, {label: "São Roque", value: "SR"} ];
The problem is that when I select an item, the value of the data source is set on the input field, not on the label. I created a descriptor for selection to save the value of the element in a hidden field and set the label in the input field, but this event is fired too soon by the plugin and the value is set again in the input field.
HTML:
<!DOCTYPE HTML> <html> <head> <link rel="stylesheet" type="text/css" href="JQuery.UI/1.8.14/themes/base/jquery.ui.base.css" /> <link rel="stylesheet" type="text/css" href="JQuery.UI/1.8.14/themes/base/jquery.ui.theme.css" /> <style> .ui-menu-item { font-size: 12px; } </style> <script src="JQuery/1.6.2/jquery-1.6.2.min.js" type="text/javascript"></script> <script src="JQuery.UI/1.8.14/js/jquery-ui-1.8.14.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var availableTags = [ {label: "Sao Paulo", value: "SP"}, {label: "Sorocaba", value: "SO"}, {label: "Paulinia", value: "PA"}, {label: "São Roque", value: "SR"} ]; $("#txtCidade").autocomplete({ minLength: 0, source: availableTags); }); function OnSelect(event, ui) { var item = ui.item; var itemLabel = item.label; var itemValue = item.value; $("#hidCidade").val(itemValue); $("#txtCidade").val(itemLabel); } </script> </head> <body> <form> <input id="hidCidade" type="hidden" /> <input id="txtCidade" type="input" class="ui-autocomplete-input" /> </form> </body> </html>
Please help me with this?
Thanks!
source share