Javascript按id禁用表单字段元素(id是数组)

时间:2012-10-13 16:56:07

标签: javascript

我正在构建一个循环事件模块以放入表单,该模块有几个字段。

我使用数组表示法为每个模块命名和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中使用[]表示法,所以建议欢迎!

1 个答案:

答案 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属性旨在支持多个值,用空格分隔