我有一个目标网站,其中有以下下拉菜单。
<select class="categories-options" data-level="1" name="level1-option" id="level1-option" required="">
<option value="">default</option>
<option value="p1" data-href="/callback/p1">P1</option>
<option value="p2" data-href="/callback/p2">P2</option>
<option value="p3" data-href="/callback/p3">P3</option>
</select>
当从菜单中选择一个项目时,它会触发&#34;更改&#34;事件发生时调用事件和函数。我已经使用Chrome调试了这个事件,当我从下拉菜单中选择一个项目时,您可以看到调试输出。我从调试器中截取了截图。
现在,让我解释一下我要做的事情。我使用javascript函数从下拉菜单中选择一个项目,使用以下代码:
var id= document.getElementById('level1-option');
setSelectedValue(id, "p2");
$('#level1-option').trigger("select");
在最后一行中,我尝试触发最初在网页中发生的同一事件,就像我手动选择了该项一样。但是,它并没有触发任何东西。 |我在调试输出中看到该事件是由类触发的。我尝试过很多不同的东西但是没有用。有人能解释一下这个问题吗?如何使用jquery或javascript触发该网页中发生的同一事件?
答案 0 :(得分:2)
您的代码:
$('#level1-option').trigger("select");
...将触发名为select
的事件(与表单字段更改的值无关),但您在调试器中停止的事件是change
,而不是{ {1}}:
如果您想触发select
事件,请触发change
事件:
change
旁注:因为您使用的是jQuery,所以您的代码可以更简单,您不需要$('#level1-option').trigger("change");
// Difference is here -------^
或getElementById
:
setSelectedValue
答案 1 :(得分:1)
试试这个
$('#level1-option').trigger("change");