当我用按钮更改其值时,我试图在文本框上触发 change
事件,但它不起作用 . 检查this fiddle .
如果在文本框中键入内容并单击其他位置,则会触发 change
. 但是,如果单击该按钮,则会更改文本框值,但不会触发 change
. 为什么?
当我用按钮更改其值时,我试图在文本框上触发 change
事件,但它不起作用 . 检查this fiddle .
如果在文本框中键入内容并单击其他位置,则会触发 change
. 但是,如果单击该按钮,则会更改文本框值,但不会触发 change
. 为什么?
8 回答
onchange
仅在用户键入输入时触发,然后输入失去焦点 .您可以在设置值后手动调用
onchange
事件:或者,你可以trigger事件使用:
从redsquare的出色建议来看,这很好用:
您可以非常轻松地覆盖
val
函数,通过将其替换为原始val
函数的代理来触发更改 .只需在文档中的某处添加此代码(在加载jQuery之后)
一个工作示例:here
(请注意,即使值实际没有更改,当调用
val(new_val)
时,也会始终触发change
. )如果您只想在值实际更改时触发更改,请使用以下值:
实例:http://jsfiddle.net/5fSmx/1/
你需要像这样链接方法:
不需要在设置值后手动触发它:
要么:
看起来这些事件并没有冒泡 . 试试这个:
我希望这有帮助 .
我尝试了一个简单的旧
$("#mytext").trigger('change')
而没有保存旧值,即使值没有改变,.change
也会触发 . 这就是为什么我保存了以前的值并且仅在它发生变化时才调用$("#mytext").trigger('change')
.来自https://api.jquery.com/change/:
change
事件在其值更改时发送到元素 . 此事件仅限于<input>
个元素,<textarea>
个框和<select>
个元素 . 对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点 .截至2019年2月
.addEventListener()
目前无法使用jQuery.trigger()
或.change()
,您可以使用Chrome或Firefox在下面进行测试 .你必须使用.dispatchEvent() .