例如,使用以下代码。我尝试了几种解决方案。
function handleChange() {
alert('hello')
}
<select id="names" onchange="handleChange()">
<option>Foo</option>
<option>Bar</option>
</select>
Run Code Online (Sandbox Code Playgroud)
解决方案1。
document.getElementById('#select').selectedIndex = 1
Run Code Online (Sandbox Code Playgroud)
这将更改select的值和显示,但不会触发handleChange();。
解决方案2
var element = document.getElementById('names');
var event = new Event('change');
element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
这返回true,但仍然不会触发handleChange();。
有关如何执行此操作的任何想法?还是可以实际完成?解决方案必须仅是javascript / html,而遗憾的是没有jQuery。
试试这个,它对我有用...您的问题可能只是您没有在触发更改之前更改解决方案2的实际值:
function handleChange() {
alert('hello')
}
console.log(document.getElementById('names'));
document.getElementById('names').selectedIndex = 1;
document.getElementById('names').dispatchEvent(new Event('change'));Run Code Online (Sandbox Code Playgroud)
<select id="names" onchange="handleChange()">
<option>Foo</option>
<option>Bar</option>
</select>Run Code Online (Sandbox Code Playgroud)