javascript - 由于从输入触发的更改事件,复选框需要单击 2 次才能进行更改
问题描述
我有一个带有输入框和复选框的表格。输入框和复选框都具有更改事件处理程序:
$('#myTable').on('change','.qty',function(){
console.log(`CHANGE FIRED FROM THE INPUT BOX CHANGE EVENT`)
//Other code
})
$('#myTable').on('change','.myCheckbox',function(){
console.log(`CHANGE FIRED FROM THE CHECKBOX CHANGE EVENT`)
//Other code
})
现在,如果我继续并单击复选框而不对输入框进行任何更改,则复选框会立即得到一个复选标记,没有任何问题。
但是,如果我对输入框进行更改,然后单击复选框(即,在更改输入框后单击复选框之前,我没有单击 dom 内的任何位置),复选框不会单击并且什么也不做。此时,我看到控制台消息说:
从输入框更改事件触发的更改
但我没有从复选框检查事件中收到任何消息。如果我第二次按下复选框,则会显示复选标记。我知道更改事件仅在我进行更改并退出该输入框时才会触发,但为什么它的更改事件会阻止复选框被选中?
起初我认为这一定是一个事件传播问题,我必须停止事件传播到某个地方。因此,我在 qty 更改事件内的 console.log 行上添加了一个断点,通过向输入添加内容并单击复选框来触发更改,并检查调用堆栈。在它之前没有运行阻止复选框被选中的函数。
这是javascript的常规行为吗?如果没有,我完全感到困惑。有人可以帮我指出可能是什么问题吗?
解决方案
推荐阅读
- c# - 在 ViewModel ASP.NET MVC 和 C# 中对数据进行分组
- excel - 结合两个 if 语句 excel - 基于条件
- delphi - 如何用delphi绘制YUV纹理?
- javascript - 正则表达式从函数组中获取单个函数体
- excel - 使用 CSS 选择器按下一个元素提取跨度文本
- weblogic - 如何从 WLST 添加 JMS 消息头属性
- hadoop - Datanode拒绝与namenode通信 - hdfs
- c# - 如何在 ASP.NET MVC Core 中获取瞬态 DbContext?
- javascript - 使用 reactnative 测试获取与 redux.js 关联的“TypeError:a 不是函数”
- c++ - OOP:什么时候应该动态声明类成员?