Jane_Doe
Jane_Doe

Reputation: 121

Select-List displays Keys instead of values

I have a stange phenomenon where I'm stuck at the moment as I don't know where the error comes from.

My code is like this:

<input id="selectClassInput" name="selectClass" list="selectClass" type="text" >
<datalist id="selectClass">
   <option value="DUMMY1">0</option>
   <option value="s">24</option>
   <option value="d">25</option>
</datalist>

My problem is with displaying the datalist. If I click on the arrow I'm getting only the numbers like here: enter image description here

After selecting for example '25' I'm getting the value 'd'. That is correct BUT I don't want to display the numbers. Instead I want to display the value of this datalist in this drop-down field.

If I do something like this:

<input id="selectClassInput" name="selectClass" list="selectClass" type="text" >
<datalist id="selectClass">
    <option value="DUMMY1">DUMMY1</option>
    <option value="s">s</option>
    <option value="d">d</option>
 </datalist>

I'd naturally get the correct display, but I would like to add the ID, so that I can bind the click event with the ID of the selection and not the label.

Upvotes: 1

Views: 441

Answers (1)

Bhushan Kawadkar
Bhushan Kawadkar

Reputation: 28513

You can make use of data attribute to find the id of option clicked from the list and keep value as labels,

see below code

$(function(){
  $('#selectClassInput').on('change', function(e){
     var val = $(this).val();
     var id = $('#selectClass').find('option[value="' + val + '"]').data('id');
     console.log(id);
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input id="selectClassInput" name="selectClass" list="selectClass" type="text" >
<datalist id="selectClass">
   <option value="DUMMY1" data-id="0">DUMMY1</option>
   <option value="s"  data-id="24">s</option>
   <option value="d" data-id="25">d</option>
</datalist>

Upvotes: 1

Related Questions