<html> <head> <script src="js/jquery-1.8.1.js"></script> <script src="select2-master/select2.js"></script> <link href="select2-master/select2.css" rel="stylesheet"/> <style>img.flag { height: 10px; width: 15px; padding-right: 10px; } </style> </head> <body> <div style="padding: 10px; margin: 10px;"> <br/><br/><br/> <input type="text" size="30"/><br/> <select id="e4" style="width:300px" class="populate"> <option></option> <option value="AK">Alaska</option> <option value="HI">Hawaii</option> <option value="CA">California</option> <option value="NV">Nevada</option> <option value="OR">Oregon</option> <option value="WA">Washington</option> </select><br/> <input type="text" size="30"/> </div> <input type="hidden" class="bigdrop" id="e6" style="width:600px" value="16340"/> <script> $(document).ready(function() { function format(state) { if (!state.id) return state.text; // optgroup return "<img class='flag' src='images/flags/" + state.id.toLowerCase() + ".png'/>" + state.text; } $("#e4").select2({ formatResult: format, formatSelection: format, escapeMarkup: function(m) { return m; }, allowClear:true, placeholder: "select a state" }); }); </script> <div style="position: absolute; left:0; top:0; background: white; border: 1px solid red;" id="focus-spy">hello there</div> <script> $(document).ready(function() { var el=$("#focus-spy"); $(window).bind("scroll", function(){ el.css({top:$(window).scrollTop()}); }); var update=function() { var a=document.activeElement; var b=$(a); el.html("tag: "+a.tagName+" id:"+a.id+" class:"+b.attr("class")+" val:"+b.val()); window.setTimeout(update, 100); }; update(); }); </script> <script id="script_e6"> function movieFormatResult(movie) { var markup = "<table class='movie-result'><tr>"; if (movie.posters !== undefined && movie.posters.thumbnail !== undefined) { markup += "<td class='movie-image'><img src='" + movie.posters.thumbnail + "'/></td>"; } markup += "<td class='movie-info'><div class='movie-title'>" + movie.title + "</div>"; if (movie.critics_consensus !== undefined) { markup += "<div class='movie-synopsis'>" + movie.critics_consensus + "</div>"; } else if (movie.synopsis !== undefined) { markup += "<div class='movie-synopsis'>" + movie.synopsis + "</div>"; } markup += "</td></tr></table>" return markup; } function movieFormatSelection(movie) { return movie.title; } $(document).ready(function() { $("#e6").select2({ placeholder: "Search for a movie", minimumInputLength: 1, multiple:true, ajax: { // instead of writing the function to execute the request we use Select2's convenient helper url: "http://api.rottentomatoes.com/api/public/v1.0/movies.json", dataType: 'jsonp', data: function (term, page) { return { q: term, // search term page_limit: 10, apikey: "ju6z9mjyajq2djue3gbvv26t" // please do not use so this example keeps working }; }, results: function (data, page) { // parse the results into the format expected by Select2. // since we are using custom formatting functions we do not need to alter remote JSON data return {results: data.movies}; } }, initSelection: function(element, callback) { // the input tag has a value attribute preloaded that points to a preselected movie's id // this function resolves that id attribute to an object that select2 can render // using its formatResult renderer - that way the movie name is shown preselected var id=$(element).val(); if (id!=="") { $.ajax("http://api.rottentomatoes.com/api/public/v1.0/movies/"+id+".json", { data: { apikey: "ju6z9mjyajq2djue3gbvv26t" }, dataType: "jsonp" }).done(function(data) { callback(data); }); } }, formatResult: movieFormatResult, // omitted for brevity, see the source of this page formatSelection: movieFormatSelection, // omitted for brevity, see the source of this page dropdownCssClass: "bigdrop", // apply css that makes the dropdown taller escapeMarkup: function (m) { return m; } // we do not want to escape markup since we are displaying html in results }); }); </script> </body> </html>