如何为多个表单输入绑定keyup函数实现数值相乘计算
问题根因
- 误用ID选择器匹配多元素:HTML规范要求ID全局唯一,使用
$("#quantity")、$("#final_price")选择元素时,浏览器只会返回页面中第一个匹配ID的元素,因此事件绑定、结果赋值都仅对第一个表单生效。 - 冗余遍历逻辑:原有代码中的
each遍历没有实际作用,jQuery选择器匹配多元素时可直接批量绑定事件,不需要额外遍历。 - 结果输出目标不匹配:原有代码固定将计算结果写入全局唯一的
#final_price元素,无法对应到当前输入框所属表单的结果展示位。
修复逻辑说明
- 将数量输入框的唯一ID替换为通用类名
ilosc,通过类选择器批量绑定keyup事件,所有表单的数量输入框都可触发计算逻辑。 - 调用
$(this).closest("form")定位当前输入框所属的父表单,再查找当前表单内的结果输入框.final-price-rental-value,确保计算结果输出到对应表单的目标位置。 - 新增
toFixed(2)处理计算结果,自动保留两位小数,符合价格类数值的展示规范。
注:原修复代码中最后一行的var final_price_input_value变量定义无实际作用,下述最终代码已做移除,不影响功能运行
最终可运行代码
$(".ilosc").on('keyup', function (e) { var quantity = parseFloat($(this).val()); var product_price = parseFloat($("input[name='product_price']").val(), 2); var final_price_input= $(this).closest("form").find(".final-price-rental-value"); var final_price_value = (quantity * product_price).toFixed(2); final_price_input.val(final_price_value); });
内容的提问来源于stack exchange,提问作者NCTI
相关产品推荐
相关产品推荐

