动态新增表格行时kg输入框Decimal格式化函数仅首行生效问题
解决动态表格行中.pesoformat输入框的格式化函数失效问题
问题核心:页面加载时直接给已存在的.pesoformat输入框绑定了alterNumber事件,但动态新增的表格行里的同类型输入框没被绑定;若盲目用全局事件监听又会影响其他输入框。
直接用事件委托就能精准解决这个问题,具体代码修改如下:
替换原来的直接绑定代码(比如$('.pesoformat').on('input', alterNumber);),改成:
// 绑定到文档根节点,仅监听.pesoformat元素的input事件 $(document).on('input', '.pesoformat', alterNumber);
要是想更高效,也可以绑定到表格的父容器(比如表格id为tableId):
$('#tableId').on('input', '.pesoformat', alterNumber);
原理说明:
事件委托利用DOM事件冒泡机制,让父元素监听子元素的事件。当动态新增的.pesoformat输入框触发input事件时,事件会冒泡到绑定的父元素,父元素会检查触发事件的目标元素是否匹配.pesoformat选择器,匹配才执行alterNumber函数——这样既覆盖了所有动态生成的目标输入框,又不会影响其他非.pesoformat的输入框。
修改后测试:新增行的kg输入框输入数值时,会自动格式化为6位小数,其他输入框不受该函数影响。
内容的提问来源于stack exchange,提问作者Mdev2023it
相关产品推荐
相关产品推荐

