0

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

我已经使用数组表示法命名并标识了每个模块。例如:

 id='recurring_event_options[yearly][by_date_day_number]'

在我的 JS 中,我需要使用匹配的 id 定位所有字段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 中使用 [] 符号,所以欢迎提出建议!

4

1 回答 1

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属性被设计成支持多个值,用空格隔开

于 2012-10-13T17:03:54.580 回答