我有一个循环遍历表单中的依赖字段。数组如下所示:
var dependentFields = [
{ parent: FLDID_LABEL, children: [FLDID_LABEL_TEMPLATE, FLDID_LABEL_INSTRUCTIONS], choiceTrigger: 'Yes', markAsReq: true },
{ parent: FLDID_SHIP_TO, children: [FLDID_SHIP_TO_ADDR], choiceTrigger: 'No', markAsReq: true }
];
我有一个函数被调用来附加所有事件处理程序。为简单起见,我将只显示问题发生的循环。
function attachEventHandlers() {
// begin dependent fields
for (var i = 0; i < dependentFields.length; i++) {
var o = dependentFields[i];
$('#' + o.parent).change(function () {
var visible = $('#' + o.parent + ' :selected').text() === o.choiceTrigger;
for (var c = 0; c < o.children.length; c++) {
var child = o.children[c];
showField(child, visible);
if (o.markAsReq && $('#' + child).val() === '') {
MarkFieldAsRequired(child);
}
}
});
}
}
只有第二个依赖字段有效,第一个无效。我认为这与方式有关,var i
或者var o
是从外部函数中引用的。实际上,相同的事件处理程序附加到所有相关字段。我怎样才能解决这个问题?
编辑:这是一个带有错误的 jsfiddle:http: //jsfiddle.net/H3Bv2/4/ 请注意更改父母中的任何一个只会影响第二个孩子。