在不实际更改DOM元素的情况下对其强制执行更改事件
force a change event on an DOM element without actually changing it
摘要:我试图在不实际更改HTML元素的情况下,强制在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元素的值确实发生了更改。问题是我不希望下拉列表中的伪值出现在那里。
摘要(再次):当下拉列表中的选定值实际上没有更改时,是否有方法强制触发下拉列表的元素更改事件?
这个片段工作正常(使用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>
您的代码似乎没有失败,所以它一定与DOM或其他人实现这种效果的方式有关。很难猜测你的问题可能是什么。所以我的建议如下:
- 检查它是否真的实现为在单选按钮更改时触发,而不是在与单选按钮没有直接关系的div/其他元素上的单击事件处理程序上触发
- 检查HTML代码是否失败
- 提供更多您认为可能相关的代码片段
相关文章:
- 如何在不使用Internet Explorer的情况下从未挂起的HTML文件执行程序
- 如何在不使用javascript执行的情况下为函数分配参数
- 如何停止两个按钮执行相同的工作?在这种情况下,它们都会滚动到顶部
- 在不使用隔离作用域的情况下执行函数的角度指令
- 在 gruntjs 构建失败的情况下强制执行某些任务
- 在不执行ajax请求的情况下,使用jQuery读取HTTP标头以检查404
- Angular在不触发摘要的情况下执行XHR请求
- 函数在我的情况下无法执行
- 如何在不使浏览器滞后的情况下暂停Javascript的执行
- Phonegap onclick在不单击的情况下执行
- 如何在不冻结浏览器的情况下执行大量javascript代码
- 使用node.js模块,在什么情况下模块会被执行两次
- 如何在不强制的情况下添加条件文本?[101,pdf格式]
- 如何在不选择模式配置参数的情况下,使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach
- button.click仅在前面有警告的情况下执行
- 如何在不打开新窗口的情况下在单页应用中执行 Dropbox 身份验证
- 在 Javascript 中,在对象到布尔的情况下,类型强制如何
- Node 的断言模块是否提供了一种在没有强制的情况下执行深度相等检查的方法?
- 在不实际更改DOM元素的情况下对其强制执行更改事件
- 在不强制执行特定样式的情况下验证JavaScript代码