DEV Community

Kurapati Mahesh
Kurapati Mahesh

Posted on • Edited on

6 1

HTML: select vs datalist

select

-> Creates drop down list
-> Doesn't filter items rather highlights the matching text
-> By default first option gets selected and populated as selected value
-> User can only select from a given list
-> User can make any option selected by default using selected attribute
-> To get selected value: document.getElementById('select#id').value;
-> We can apply onchange on select tag.
-> select by default display:inline-block
-> Option label populated and shown as option

datalist

-> Specifies list of predefined options for an input element
-> Shows only filtered items as soon as user start typing in text box
-> Doesn't select any option by default.
-> User can choose from list or enter his own item.
-> We have to assign value attribute to pre-populate data in input
-> To get selected value: document.getElementById('input#id').value;
-> We can apply onchange on input element
-> Datalist by default display: none
-> Option value only populated in data list

select with examples

-> Creates drop down list



    <label for="cars">Select a car: </label>
    <select id="cars" name="cars">
        <option value="volvo">VOLVO</option>
        <option value="bmw">BMW</option>
        <option value="audi">AUDI</option>
        <option value="lamborghini">LAMBORGHINI</option>
    </select>


Enter fullscreen mode Exit fullscreen mode

Image description

Image description

-> Doesn't filter items rather highlights the matching text. Type in 'B' incase of our example and observe that BMW gets highlighted.
Image description

-> By default first option gets selected and populated as selected value
Image description

-> User can only select from given list
We can't type in any characters as it is not an input box. Hence only option is to select from given list.

-> User can make any option selected by default using selected attribute



<label for="cars">Select a car: </label>
    <select id="cars" name="cars">
        <option value="volvo">VOLVO</option>
        <option value="bmw" selected>BMW</option>
        <option value="audi">AUDI</option>
        <option value="lamborghini">LAMBORGHINI</option>
    </select>


Enter fullscreen mode Exit fullscreen mode

Image description

-> To get selected value: document.getElementById('select#id').value;



document.getElementById('cars').value;
> bmw


Enter fullscreen mode Exit fullscreen mode

-> We can apply onchange on select tag.



<label for="cars">Select a car: </label>
    <select id="cars" name="cars" onchange="optionChanged(event)">
        <option value="volvo">VOLVO</option>
        <option value="bmw" selected>BMW</option>
        <option value="audi">AUDI</option>
        <option value="lamborghini">LAMBORGHINI</option>
    </select>

<script>
function optionChanged(event) {
    console.log(event.target.value);
}
</script>


Enter fullscreen mode Exit fullscreen mode

-> select by default display:inline-block
Image description

-> option label populated and shown as option
value is 'volvo' and its label is VOLVO. All the cars labels are displayed in dropdown.

Image description

Datalist with examples:

-> specifies list of predefined options for input element



    <label for="car">Select a car: </label>
    <input list="cars" name="cars" id="car">
    <datalist id="cars">
        <option value="volvo">
        <option value="bmw">
        <option value="audi">
        <option value="lamborghini">
    </datalist>


Enter fullscreen mode Exit fullscreen mode

Image description

Image description

-> Shows only filtered items as soon as user start typing in text box
Image description

-> Doesn't select any option by default.
Image description

-> User can choose from list or enter his own item.
Image description

-> We have to assign value attribute to pre-populate data in input



<label for="cars">Select a car: </label>
    <input list="car" name="car" id="cars" value="audi">
    <datalist id="car">
        <option value="volvo">
        <option value="bmw">
        <option value="audi">
        <option value="lamborghini">
    </datalist>


Enter fullscreen mode Exit fullscreen mode

Image description

-> to get selected value: document.getElementById('input#id').value;



document.getElementById('cars').value;


Enter fullscreen mode Exit fullscreen mode

-> we can apply onchange on input element



<label for="cars">Select a car: </label>
    <input list="car" name="car" id="cars" onchange="optionChanged(event)">
    <datalist id="car">
        <option value="volvo">
        <option value="bmw">
        <option value="audi">
        <option value="lamborghini">
    </datalist>
<script>
function optionChanged(event) {
    console.log(event.target.value);
}
</script>


Enter fullscreen mode Exit fullscreen mode

-> datalist by default display: none
Image description

-> option value only populated in data list We only provided values for each option element and not the labels. Also, same are populated.



    <label for="car">Select a car: </label>
    <input list="cars" name="cars" id="car">
    <datalist id="cars">
        <option value="volvo">
        <option value="bmw">
        <option value="audi">
        <option value="lamborghini">
    </datalist>


Enter fullscreen mode Exit fullscreen mode

Image description

Thanks.

Point any further differences.

Follow: https://twitter.com/urstrulyvishwak

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay