Multiple Selections With Datalist August 28, 2023 Post a Comment I'm using the tag to create a list of suggestions for my search box, but I cannot select multiple values from the datalist. Currently, my HTML is: Solution 1: Multiple currently working only with input type="email" and only in Chrome and OperaLook at this minimalist example:input{width:500px}Copy<inputtype="email"list="emails"multiple><datalistid="emails"><optionvalue="first@example.com"><optionvalue="second@example.com"><optionvalue="third@example.com"><optionvalue="last@example.com"></datalist><br><br><br><inputtype="text"list="texts"multiple><datalistid="texts"><optionvalue="black"><optionvalue="gold"><optionvalue="grey"><optionvalue="pink"><optionvalue="turquoise"><optionvalue="red"><optionvalue="white"></datalist>CopyFirst input will be working, second NOT.You only press comma, and list will appear as same as on click into input. Solution 2: Super-simple jQuery tool: FlexdatalistI wanted something simpler, but the "multiple" attribute, from what I understand, only works with email and files because the HTML5 devs don't want to open a can of worms, but devs are considering a change. After searching all over, the only way I could get this to work was to also get those fancy, useful "#tagHere X" items in the list like on so many websites. It was all or nothing and it solved my same problem.Unfortunately, I couldn't find complete instructions on how to use Flexdatalist. So, I'm including a super-complete walk-through with a working example, pardon if it it too much...1. Get only two files from Flexdatalist on GitHubjquery.flexdatalist.min.jsjquery.flexdatalist.css (You could do .min.css instead, but you probably want to tweak the CSS)2. Put these two files in the right place:I used:[DOMAIN]/js/jquery.flexdatalist.min.js [DOMAIN]/css/jquery.flexdatalist.css Copy3. Include the CSS fileeither:@import "jquery.flexdatalist.css"; in your style.css file already in [DOMAIN]/css/or<link href="css/jquery.flexdatalist.css" type="text/css">between your <head> tags of the page with the datalist4. Include these attributes in your <input> element that contains your datalist(along with your other attributes)Baca JugaHow To Use Ajax And The Html Structure To Echo Autocomplete Options?How To Clear Datalist Input When Options Are Opened?Mouse Cursor Doesn't Match With Canvas<input... class="flexdatalist form-control" data-min-length="1" data-searchContain="true" multiple="multiple" ...>5. Include three JavaScript statements after your datalist<scriptsrc="http://code.jquery.com/jquery-1.8.3.min.js"></script><scriptsrc="js/jquery.flexdatalist.min.js"></script><script> $('.flexdatalist-json').flexdatalist({ searchContain: false, valueProperty: 'iso2', minLength: 1, focusFirstResult: true, selectionRequired: true, }); </script>CopyWorking example:[DOMAIN]/index.html:<!DOCTYPE html><html><head><title>Flexdatalist Minimalist</title><linkhref="jquery.flexdatalist.css"type="text/css"></head><body><inputtype="text"placeholder="Choose a fruit"class="flexdatalist form-control"data-min-length="1"data-searchContain="true"multiple="multiple"list="fruit"name="my-fruit"><datalistid="fruit"><optionvalue="Apples">Apples</option><optionvalue="Bananas">Bananas</option><optionvalue="Cherries">Cherries</option><optionvalue="Kiwi">Kiwi</option><optionvalue="Pineapple">Pineapple</option><optionvalue="Zucchini">Zucchini</option></datalist><scriptsrc="http://code.jquery.com/jquery-1.8.3.min.js"></script><scriptsrc="jquery.flexdatalist.min.js"></script><script> $('.flexdatalist-json').flexdatalist({ searchContain: false, valueProperty: 'iso2', minLength: 1, focusFirstResult: true, selectionRequired: true, }); </script></body></html>CopyWith the two files here:[DOMAIN]/js/jquery.flexdatalist.min.js [DOMAIN]/css/jquery.flexdatalist.css CopyAn alternative, with great documentation, is: AwesomepleteSolution 3: Customized datalist to accept multiple values: After each entry press ,(Comma) and then Spacebarvar datalist = jQuery('datalist'); var options = jQuery('datalist option'); var optionsarray = jQuery.map(options ,function(option) { return option.value; }); var input = jQuery('input[list]'); var inputcommas = (input.val().match(/,/g)||[]).length; var separator = ','; functionfilldatalist(prefix) { if (input.val().indexOf(separator) > -1 && options.length > 0) { datalist.empty(); for (i=0; i < optionsarray.length; i++ ) { if (prefix.indexOf(optionsarray[i]) < 0 ) { datalist.append('<option value="'+prefix+optionsarray[i]+'">'); } } } } input.bind("change paste keyup",function() { var inputtrim = input.val().replace(/^\s+|\s+$/g, ""); //console.log(inputtrim);var currentcommas = (input.val().match(/,/g)||[]).length; //console.log(currentcommas);if (inputtrim != input.val()) { if (inputcommas != currentcommas) { var lsIndex = inputtrim.lastIndexOf(separator); var str = (lsIndex != -1) ? inputtrim.substr(0, lsIndex)+", " : ""; filldatalist(str); inputcommas = currentcommas; } input.val(inputtrim); } });Copyhtml, body { display: flex; align-items:center; flex-direction: column; justify-content: center; min-height: 100% } label { display: block; font-size: 15px; padding: 10px0; } input { border: 2px solid #1E824C; color: #333; font-size: 12px; padding: 5px3px } small { display: block; font-size: 11px; padding-top: 5px; }Copy<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><scriptsrc="https://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script><labelfor="authors">Type authors from favorite to least favorite</label><inputtype="text"list="names-list"id="authors"value=""size="50"name="authors"placeholder="Type author names"><small>You can type how many you want.</small><datalistid="names-list"><optionvalue="Albert Camus"><optionvalue="Alexandre Dumas"><optionvalue="C. S. Lewis"><optionvalue="Charles Dickens"><optionvalue="Dante Alighieri"></datalist>CopySolution 4: According to this 'multiple' attribute is only valid with email and file input types.Solution 5: I had the same problem and the solutions suggested just did not seem to cut it. I wrote this Pure JS (IE11 safe) plugin UnComplete to create an interaction that helped manage multiple values. Share You may like these postsFlexbox: Header, Centered Body And Sticky Footer OverflowGet The Name Of The Nav-item On Which It Was Clicked301 Moved PermanentlyCss Min-width No Horizontal Scroll Bar Is Showing Post a Comment for "Multiple Selections With Datalist"
Post a Comment for "Multiple Selections With Datalist"