Javascript OnChange事件不发生';我似乎没有正确地上钩
可能是非常愚蠢的事情,但是假设我有两个匹配$('[id$=\u product\u id]')的元素,为什么更改事件没有正确匹配Javascript OnChange事件不发生';我似乎没有正确地上钩,javascript,Javascript,可能是非常愚蠢的事情,但是假设我有两个匹配$('[id$=\u product\u id]')的元素,为什么更改事件没有正确匹配 var numberPattern = /\d+/g; $('[id$=_product_id]').each(function(idx, elem) { recordId = elem.id.match(numberPattern) productId = elem.value; console.log(recordId); $("#c
var numberPattern = /\d+/g;
$('[id$=_product_id]').each(function(idx, elem) {
recordId = elem.id.match(numberPattern)
productId = elem.value;
console.log(recordId);
$("#client_order_order_lines_attributes_" + recordId + "_product_id").on("change", function(e) {
console.log(recordId);
})
});
我制作了一把小提琴来证明这一点
我遗漏了什么?您需要声明这些变量,这是隐式全局变量的危险
var recordId = elem.id.match(numberPattern);
var productId = elem.value;
演示:您需要声明这些变量,这是隐式全局变量的危险
var recordId = elem.id.match(numberPattern);
var productId = elem.value;
演示:您应该更改代码,在变量名称前面添加变量:
var numberPattern = /\d+/g;
$('[id$=_product_id]').each(function(idx, elem) {
var recordId = elem.id.match(numberPattern),
productId = elem.value;
console.log(recordId);
$("#client_order_order_lines_attributes_" + recordId + "_product_id").on("change", function(e) {
console.log(recordId);
})
});
您应该更改代码,在变量名称前面添加变量:
var numberPattern = /\d+/g;
$('[id$=_product_id]').each(function(idx, elem) {
var recordId = elem.id.match(numberPattern),
productId = elem.value;
console.log(recordId);
$("#client_order_order_lines_attributes_" + recordId + "_product_id").on("change", function(e) {
console.log(recordId);
})
});
这确实是可行的,肯定需要仔细阅读。谢谢这确实是可行的,肯定需要仔细阅读。谢谢