0

フォームにドロップする定期的なイベントモジュールを作成しています。このモジュールにはいくつかのフィールドがあります。

配列表記を使用して、この各モジュールに名前を付けてIDを付けました。例えば:

 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 に答える