下拉值相同时如何调用onchange事件
我正在使用Jquery选择的插件,它工作正常。 我在我的一个模块中使用过这个插件。 我的下拉值是这样的:
ITEM001 ITEM002 ITEM001 ITEM003
它工作正常。 但问题是,当用户选择第一个选项然后尝试更改第三个选项时,onchange事件不会触发,因为两个选项值都相同。 如果值相同或不同,有没有办法每次调用onchange事件?
选项值是项的唯一键,因此在下拉列表中重复。 下拉值是重复的,我们允许在其他模块中使用相同的项目
我看到你的实现,它在代码笔工作正常这里是链接,无需改变任何东西
var get_data =function(){ alert("saas") }
试试这个
$('#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); })