如何为动态创建的input文本框绑定onchange事件?
问题根因
你当前的写法错误在于,直接执行了find_emp(input.value),将函数执行后的返回值(默认是undefined)绑定为事件回调,而不是把函数本身作为回调绑定到change事件上,所以内容变化时不会触发对应逻辑。
修复方案
方案1:用匿名函数包裹(最常用,推荐)
这种写法每次事件触发时都会取input的最新值,符合绝大多数场景的需求:
// addEventListener 写法 input.addEventListener("change", function() { find_emp(this.value); }); // 箭头函数简写 input.addEventListener("change", () => find_emp(input.value)); // onchange 赋值写法 input.onchange = () => find_emp(input.value);
方案2:用bind方法绑定参数
如果需要提前绑定部分参数可以用这种写法,注意如果绑定的是input.value,只会取绑定时的静态值,不会同步更新:
input.addEventListener("change", find_emp.bind(null, input.value));
额外说明
change事件的触发时机是输入框失去焦点且内容发生变更时,如果你需要输入过程中实时触发回调,可以把事件名替换为input:
input.addEventListener("input", () => find_emp(input.value));
内容的提问来源于stack exchange,提问作者user15089140
相关产品推荐
相关产品推荐

