How To Call Onchange Event When Dropdown Values Are Same November 27, 2022 Post a Comment I am using Jquery chosen plugin and it's working fine. I have used this plugin in my one of the module. My dropdown values are something like that: Solution 1: I saw your implementation and it is working fine in code pen here is the link no need to change anything <select id="itemcode" onchange="get_data()"> <option value="1">ITEM001</option> <option value="2">ITEM002</option> <option value="1">ITEM001</option> <option value="3">ITEM003</option> </select> var get_data =function(){ alert("saas") } Copy http://codepen.io/vkvicky-vasudev/pen/dXXVzN Solution 2: Try this $('#itemcode').click(function() { console.log($(this).val()); });Copy <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id="itemcode"> <option value="1">ITEM001-A</option> <option value="2">ITEM002</option> <option value="1">ITEM001-B</option> <option value="3">ITEM003</option> </select>Copy Solution 3: Edit: This doesn't work. Sorry! You could add a data attribute that differs for each element, for example: <select id="itemcode" onchange="get_data()"> <option value="1" data-id="1">ITEM001</option> <option value="2" data-id="2">ITEM002</option> <option value="1" data-id="3">ITEM001</option> <option value="3" data-id="4">ITEM003</option> </select> Copy If you're using Rails or another framework to generate the <option> tags, it should be easy to add an incremental id to each element. Solution 4: There is no way to fire get_data() with your current data. The solution below is more of a hack. When you populate the options, prepend the value with something unique. Eg. <select id="itemcode" onchange="get_data()"> <option value="1_1">ITEM001</option> <option value="2_2">ITEM002</option> <option value="3_1">ITEM001</option> <option value="4_3">ITEM003</option> </select> Copy Thus your get_data() method will be called everytime. And in your get_data() method, split the value using underscore _ and you can get the actual value there. function get_data(){ var actualValue=$(this).val().split("_")[1]; //do other processing ... } Copy You can use other characters like $, or anything you like, instead of _ Solution 5: Ideally you want to change the data coming from the backend so that you don't get duplicate data. However if this is not possible, another approach would be to sanitise the data before putting it in the select. E.g https://jsfiddle.net/vuks2bpt/ var dataFromBackend = [ {key:1, value: "ITEM0001" }, {key:2, value: "ITEM0002" }, {key:1, value: "ITEM0001" }, {key:3, value: "ITEM0003" } ]; function removeDuplicates(array){ var o = {}; array.forEach(function(item){ o[item.key] = item.value; }); return o; } function get_data(){ console.log('get_data'); } var sanitised = removeDuplicates(dataFromBackend); var select = document.createElement('select'); select.id = "itemcode"; select.addEventListener('change', get_data); Object.keys(sanitised).forEach(function(key){ var option = document.createElement('option'); option.value = key; option.textContent = sanitised[key]; select.appendChild(option); }) document.getElementById('container').appendChild(select); Copy Share Post a Comment for "How To Call Onchange Event When Dropdown Values Are Same"
Post a Comment for "How To Call Onchange Event When Dropdown Values Are Same"