Created
May 27, 2022 23:52
-
-
Save Snarp/bca51315647e9e50dcbc3a8e569ec3fd to your computer and use it in GitHub Desktop.
JQuery UI autocomplete widget examples with various select/sort options
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<title>Autocomplete Example - JQuery UI</title> | |
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> | |
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.min.js" integrity="sha256-eTyxS0rkjpLEo16uXTS0uVCS4815lc40K2iVpWDvdSY=" crossorigin="anonymous"></script> | |
<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.1/themes/base/jquery-ui.css" integrity="sha256-WKb0npL30v0SRtmMVowqx9a+gy3f7OZ+yffvMzJ2at8=" crossorigin="anonymous"> | |
<script> | |
$(function() { | |
var countries = ["Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antigua & Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia & Herzegovina","Botswana","Brazil","British Virgin Islands","Brunei","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Cayman Islands","Central Arfrican Republic","Chad","Chile","China","Colombia","Congo","Cook Islands","Costa Rica","Cote D Ivoire","Croatia","Cuba","Curacao","Cyprus","Czech Republic","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Falkland Islands","Faroe Islands","Fiji","Finland","France","French Polynesia","French West Indies","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guam","Guatemala","Guernsey","Guinea","Guinea Bissau","Guyana","Haiti","Honduras","Hong Kong","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Isle of Man","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macau","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauro","Nepal","Netherlands","Netherlands Antilles","New Caledonia","New Zealand","Nicaragua","Niger","Nigeria","North Korea","Norway","Oman","Pakistan","Palau","Palestine","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Reunion","Romania","Russia","Rwanda","Saint Pierre & Miquelon","Samoa","San Marino","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Korea","South Sudan","Spain","Sri Lanka","St Kitts & Nevis","St Lucia","St Vincent","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Timor L'Este","Togo","Tonga","Trinidad & Tobago","Tunisia","Turkey","Turkmenistan","Turks & Caicos","Tuvalu","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States of America","Uruguay","Uzbekistan","Vanuatu","Vatican City","Venezuela","Vietnam","Virgin Islands (US)","Yemen","Zambia","Zimbabwe"]; | |
// Default settings (unintuitive): Matches anywhere in the term, thus often returning suggestions "out-of-order" (example: 'V' suggests "Bolivia", "Bosnia & Herzegovina", etc before "Vanuatu", "Vatican City") | |
$("input#includes-term").autocomplete({source: countries}); | |
// Matches from start of term ONLY ('V' => only results starting w 'V') | |
$("input#starts-with-term").autocomplete({ | |
source: function(request, response) { | |
var rx = new RegExp("^" + $.ui.autocomplete.escapeRegex(request.term), "i"); | |
response( $.grep(countries, function(val){ return rx.test(val) }) ); | |
} | |
}); | |
// // Sorts results starting w term first, then results containing term. ('V' => first results starting w 'V', then results containing 'V') | |
// SOURCE: <https://stackoverflow.com/questions/10948911/> | |
$("input#starts-with-then-includes-term").autocomplete({ | |
source: function(request, response) { | |
var term = $.ui.autocomplete.escapeRegex(request.term); | |
var rx = new RegExp("^" + term, "i"); | |
var startsWith = $.grep(countries, function(val) { | |
return rx.test(val.label || val.value || val); | |
}); | |
rx = new RegExp(term, "i"); | |
var contains = $.grep(countries, function(val) { | |
return $.inArray(val, startsWith) < 0 && | |
rx.test(val.label || val.value || val); | |
}); | |
response(startsWith.concat(contains)); | |
} | |
}); | |
}); | |
</script> | |
<style> | |
.main { margin: 1em auto; width: 60%; max-width: 800px; } | |
hr { margin: 2em 0; } | |
input { display: block; margin-bottom: 1em; font-size: 18px; width: 100%; } | |
</style> | |
</head> | |
<body> | |
<section class="main"> | |
<h1>Autocomplete Example - JQuery UI</h1> | |
<p><a href="https://jqueryui.com/autocomplete/">Source: jqueryui.com/autocomplete</a></p> | |
<hr/> | |
<h3>Enter Country Name:</h3> | |
<form autocomplete="off"> | |
<input id="includes-term" type="text" name="country" placeholder="Search anywhere, don't sort (default)"> | |
<input id="starts-with-term" type="text" name="country" placeholder="Search only first letters in name"> | |
<input id="starts-with-then-includes-term" type="text" name="country" placeholder="Prioritize first letters (recommended)"> | |
</form> | |
</section> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment