摘要:我正在尝试强制更改事件以触发HTML元素,而不实际更改它,但事件似乎没有触发。
我的方案:有一个页面(由其他人创建),用于隐藏某些字段,直到选择某个下拉列表中的值,此时将显示相关字段。但在某些情况下,下拉列表应自动填充,默认情况下应显示字段。所以我试图欺骗页面在首次加载时显示依赖字段。我做这样的事情:
form.field('THEDROPDOWNFIELD').$el.trigger('change');
但没有任何反应。我找到了
form.field(‘THEDROPDOWNFIELD’).setValue(form.field('THEDROPDOWNFIELD').$el[0][1].value); //dummy value, first value in the list
form.field('THEDROPDOWNFIELD').$el.trigger('change');
将触发更改事件。无论出于何种原因,$ el.trigger(' change')都不会触发更改,除非DOM元素的值确实发生了变化。问题是我不希望该下拉列表中的虚拟值存在。
摘要(再次):当下拉列表中的选定值实际没有更改时,有没有办法强制下拉列表的元素更改事件触发?
答案 0 :(得分:1)
此代码段正常(使用JQuery):
$('#toChange').bind('change', function() {
$('#result').text('select changed');
})
$('#triggerChange').bind('click', function() {
$('#toChange').trigger('change');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<select id="toChange">
<option>---</option>
<option>First</option>
<option>Second</option>
<option>Third</option>
</select>
</form>
<br>
<button id="triggerChange">Click to trigger change</button>
<div id="result"></div>
答案 1 :(得分:1)
你的代码似乎没有失败,所以它必须是与DOM相关的东西或者其他人实现这种效果的方式。很难猜出你的问题可能是什么。所以我的建议如下: