我正在构建一个循环事件模块以放入表单,该模块有几个字段。
我使用数组表示法为每个模块命名和ID。 EG:
id='recurring_event_options[yearly][by_date_day_number]'
在我的JS中,我需要使用匹配的标识recurring_event_options
我有一些JS很好地工作,根据需要启用(非禁用)字段,但在运行之前我需要禁用此模块中的所有字段。
我一直在使用与此类似的东西来禁用字段:
function disableForm(theform) {
if (document.all || document.getElementById) {
for (i = 0; i < theform.length; i++) {
var formElement = theform.elements[i];
if (true) {
formElement.disabled = true;
}
}
}
}
正如您所看到的那样,它会击中表单中的每个字段 - 这不是我想要的 - 只是禁用属于recurring_event_options
父ID的字段。
我有一种感觉,我可能无法在ID中使用[]表示法,所以建议欢迎!
答案 0 :(得分:0)
首先,我认为使用[]
不是一个好主意。
您可以使用连字符-
或下划线_
来分隔值:
id='recurring_event_options-yearly-by_date_day_number'
现在你可以禁用:
function disableForm(theform) {
for (i = 0; i < theform.length; i++) {
var formElement = theform.elements[i];
if (formElement.id.indexOf("recurring_event_options") !== -1) {
formElement.disabled = true;
}
}
}
这应该有效。但在我看来,如果你改用一个类会更好:
<input type="text" class="recurring_event_options prop2 prop3" />
因为class属性旨在支持多个值,用空格分隔