如何通过jQuery操作动态添加的输入,实现同区域下拉与输入联动?
问题根源
- 原代码中直接使用
jQuery(dropdownField).val()获取下拉值,会默认取页面第一个匹配的下拉框的值,而非当前触发change事件的下拉框对应值 - 赋值时未限定查找范围,
jQuery(prjIDfield)会匹配页面所有符合规则的输入框,无法对应到当前区块的目标输入框 - 原代码变量声明存在语法问题,
dropdownField定义后误写分号,导致prjIDfield意外成为全局变量
修复后代码
var values, dropdownField = "select[id^=field_bev5i972c9c1b67]", prjIDfield = "input[id^=field_project_id]"; jQuery(document).on('change', dropdownField, function(){ // 拿到当前触发事件的下拉框所属的父区块 var parent = jQuery(this).closest('.frm_repeat_sec'); // 直接取当前下拉框的选中值,而非全局查找 var values = jQuery(this).val(); var projID = values.substring(values.indexOf(" ")).trim(); // 仅在当前父区块内查找对应的只读输入框赋值 parent.find(prjIDfield).val(projID); });
修改说明
- 把全局下拉框取值改为
jQuery(this).val(),this指向当前触发change事件的下拉框元素 - 输入框查找限定在当前父区块
parent范围内,使用find()方法筛选,保证只操作同区块的对应输入框 - 修正了变量声明的语法错误,避免全局变量污染
- 把trim操作提前到substring之后,减少重复调用
内容的提问来源于stack exchange,提问作者lz430
相关产品推荐
相关产品推荐

