下拉值相同时如何调用onchange事件

我正在使用Jquery选择的插件,它工作正常。 我在我的一个模块中使用过这个插件。 我的下拉值是这样的:

 ITEM001 ITEM002 ITEM001 ITEM003  

它工作正常。 但问题是,当用户选择第一个选项然后尝试更改第三个选项时,onchange事件不会触发,因为两个选项值都相同。 如果值相同或不同,有没有办法每次调用onchange事件?

选项值是项的唯一键,因此在下拉列表中重复。 下拉值是重复的,我们允许在其他模块中使用相同的项目

我看到你的实现,它在代码笔工作正常这里是链接,无需改变任何东西

  var get_data =function(){ alert("saas") } 

http://codepen.io/vkvicky-vasudev/pen/dXXVzN

试试这个

 $('#itemcode').click(function() { console.log($(this).val()); }); 
   

编辑:这不起作用。 抱歉!

您可以为每个元素添加不同的数据属性,例如:

  

如果您使用Rails或其他框架来生成标记,则应该很容易为每个元素添加增量ID。

无法使用当前数据触发get_data() 。 下面的解决方案更像是一个黑客攻击。 填充选项时,请使用唯一的值添加值。 例如。

  

因此,每次都会调用get_data()方法。 在你的get_data()方法中,使用下划线_分割值,你可以在那里获得实际值。

 function get_data(){ var actualValue=$(this).val().split("_")[1]; //do other processing ... } 

您可以使用其他字符,例如$或您喜欢的任何字符,而不是_

理想情况下,您希望更改来自后端的数据,以便您不会获得重复数据。 但是,如果无法做到这一点,另一种方法是在将数据放入选择之前对数据进行清理。 例如

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); 

我使用的是jquery而不是java脚本

  

jQuery的

 $('#itemcode:option').on("click",function(){ alert(saaas); })