jQuery如何访问input数组中用户当前输入的特定元素获取商品编码
问题原因
你当前的代码在keyup事件回调中遍历了所有name="product_code[]"的输入框取值,因此会返回全部输入框的值,无法定位到当前正在输入的目标元素。
解决方法
要获取当前触发输入事件的输入框值,直接使用回调函数中的this对象即可,它指向触发本次keyup事件的对应输入框:
$('[name="product_code[]"]').keyup(function() { // 获取当前输入框的商品编码值 const currentProductCode = $(this).val(); alert(currentProductCode); // 此处可添加请求逻辑,用currentProductCode查询数据库后填充对应商品描述 });
扩展适配(动态新增商品行场景)
如果你的发票系统支持动态添加多行商品,上述直接绑定事件的写法对新增的输入框不会生效,建议改用事件委托的写法,绑定到页面中不会被动态销毁的父级容器上(比如包裹输入框的表格):
// 把#invoice_table替换为你实际的父容器选择器 $('#invoice_table').on('keyup', '[name="product_code[]"]', function() { const currentProductCode = $(this).val(); // 示例:找到当前输入框所在行的商品描述字段赋值,可根据实际DOM结构调整 const currentRow = $(this).closest('tr'); // 模拟查询后赋值逻辑 // $.ajax({ // url: '你的商品查询接口地址', // data: { code: currentProductCode }, // success: res => { // currentRow.find('[name="product_desc[]"]').val(res.desc); // } // }) });
内容的提问来源于stack exchange,提问作者Lef
相关产品推荐
相关产品推荐

