To explain how to work with AutoComplete widget in Kendo UI, I’m going to use the following API which I have created from my previous article,

1. api/department

GET: api/department response as shown in figure 1,



Create an HTML page in your project, in my case I named it KendoAutoComplete.html.

Design in KendoAutoComplete.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" />
  5. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" />
  6. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.min.css" />
  7. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.default.min.css" />
  8. <script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script>
  9. <script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script>
  10. <script src="http://cdn.kendostatic.com/2014.3.1029/js/jszip.min.js"></script>
  11. <title></title>
  12. <meta charset="utf-8" />
  13. </head>
  14. <body>
  15. <div id="example">
  16. <input data-role="autocomplete"
  17. data-placeholder="Department"
  18. data-text-field="DepartmentName"
  19. data-bind="value: selectedProduct,
  20. source: products,
  21. visible: isVisible,
  22. enabled: isEnabled"
  23. style="width: 100%;" />
  24. </div>
  25. </body>
  26. </html>

JavaScript

  1. $(document).ready(function () {
  2. var viewModel = kendo.observable({
  3. selectedProduct: null,
  4. isVisible: true,
  5. isEnabled: true,
  6. products: new kendo.data.DataSource({
  7. transport: {
  8. read: {
  9. url: "api/Departments",
  10. dataType: "json"
  11. }
  12. }
  13. })
  14. })
  15. kendo.bind($("#example"), viewModel);
  16. })
Result in Browser

Events in Kendo Autocomplete widget

The main events in Kendo Autocomplete widget is listed below:

  1. Databound
  2. Change
  3. Open
  4. Close
  5. Select

Databound: This event is fired when the kendo Autocomplete is bound to data from its data source.

HTML

  1. <input data-role="autocomplete"
  2. data-placeholder="Department"
  3. data-text-field="DepartmentName"
  4. data-bind="value: selectedProduct,
  5. source: products,
  6. visible: isVisible,
  7. enabled: isEnabled,events:{dataBound:AutoComplete_Bound}"
  8. style="width: 100%;" />

JavaScript

  1. AutoComplete_Bound:function(e)
  2. {
  3. e.preventDefault();
  4. alert("DataBaound")
  5. },

Result in Browser



Change Event:
This event in Kendo AutoComplete is fired when the value of the widget is changed by user.

HTML Design
  1. <input data-role="autocomplete"
  2. data-placeholder="Department"
  3. data-text-field="DepartmentName"
  4. data-bind="value: selectedProduct,
  5. source: products,
  6. visible: isVisible,
  7. enabled: isEnabled,events:{change:AutoComplete_Change}"
  8. style="width: 100%;" />

JavaScript

  1. AutoComplete_Change:function(e)
  2. {
  3. e.preventDefault();
  4. alert("Change Event")
  5. },
Result in Browser


Open Event: This event is fired when the items in the widget is opened.

HTML

  1. <input data-role="autocomplete"
  2. data-placeholder="Department"
  3. data-text-field="DepartmentName"
  4. data-bind="value: selectedProduct,
  5. source: products,
  6. visible: isVisible,
  7. enabled: isEnabled,events:{open:AutoComplete_Open}"
  8. style="width: 100%;" />

JavaScript

  1. AutoComplete_Open:function(e)
  2. {
  3. e.preventDefault();
  4. alert("Open Event")
  5. },
Result in Browser


Close Event: This event is fired when the items in the widget is closed.

HTML

  1. <input data-role="autocomplete"
  2. data-placeholder="Department"
  3. data-text-field="DepartmentName"
  4. data-bind="value: selectedProduct,
  5. source: products,
  6. visible: isVisible,
  7. enabled: isEnabled,events:{close:AutoComplete_Close}"
  8. style="width: 100%;" />

JavaScript

  1. AutoComplete_Close:function(e)
  2. {
  3. e.preventDefault();
  4. alert("Close Event")
  5. },

Result in Browser


Select Event: This event is fired when an item from the AutoComplete box is selected by the user.

HTML
  1. <input id="AutoFill_ID" data-role="autocomplete"
  2. data-placeholder="Department"
  3. data-selectable="true"
  4. data-text-field="DepartmentName"
  5. data-bind="value: selectedProduct,
  6. source: products,
  7. visible: isVisible,
  8. enabled: isEnabled,events:{select:AutoComplete_Select}"
  9. style="width: 100%;" />

JavaScript

  1. AutoComplete_Select:function(e)
  2. {
  3. var item = e.sender.dataItem(e.item.index());
  4. viewModel.set("selectedPerson", item);
  5. alert(item.DepartmentName);
  6. },

Result in Browser


Here is the complete code:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.common.min.css" />
  5. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.default.min.css" />
  6. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.min.css" />
  7. <link rel="stylesheet" href="http://cdn.kendostatic.com/2014.3.1316/styles/kendo.dataviz.default.min.css" />
  8. <script src="http://cdn.kendostatic.com/2014.3.1316/js/jquery.min.js"></script>
  9. <script src="http://cdn.kendostatic.com/2014.3.1316/js/kendo.all.min.js"></script>
  10. <script src="http://cdn.kendostatic.com/2014.3.1029/js/jszip.min.js"></script>
  11. <title></title>
  12. <meta charset="utf-8" />
  13. </head>
  14. <body>
  15. <div id="example">
  16. <input id="AutoFill_ID" data-role="autocomplete"
  17. data-placeholder="Department"
  18. data-selectable="true"
  19. data-text-field="DepartmentName"
  20. data-bind="value: selectedProduct,
  21. source: products,
  22. visible: isVisible,
  23. enabled: isEnabled,events:{dataBound:AutoComplete_Bound,change:AutoComplete_Change,
  24. open:AutoComplete_Open,close:AutoComplete_Close,select:AutoComplete_Select}"
  25. style="width: 100%;" />
  26. </div>
  27. <script>
  28. $(document).ready(function () {
  29. var viewModel = kendo.observable({
  30. selectedProduct: null,
  31. isVisible: true,
  32. isEnabled: true,
  33. selectedPerson: {},
  34. AutoComplete_Select:function(e)
  35. {
  36. var item = e.sender.dataItem(e.item.index());
  37. viewModel.set("selectedPerson", item);
  38. alert(item.DepartmentName);
  39. },
  40. AutoComplete_Bound:function(e)
  41. {
  42. e.preventDefault();
  43. alert("DataBaound")
  44. },
  45. AutoComplete_Change:function(e)
  46. {
  47. e.preventDefault();
  48. alert("Change Event")
  49. },
  50. AutoComplete_Open:function(e)
  51. {
  52. e.preventDefault();
  53. alert("Open Event")
  54. },
  55. AutoComplete_Close:function(e)
  56. {
  57. e.preventDefault();
  58. alert("Close Event")
  59. },
  60. products: new kendo.data.DataSource({
  61. transport: {
  62. read: {
  63. url: "api/Departments",
  64. dataType: "json"
  65. }
  66. }
  67. })
  68. })
  69. kendo.bind($("#example"), viewModel);
  70. })
  71. </script>
  72. </body>
  73. </html>
I hope you enjoyed this article. Your valuable feedback, question, or comments about this article are always welcomed.