0

約 25 の入力 (テキスト、ラジオ、チェックボックス) を持つ拡張フォームがあります。jQueryダイアログを開くボタンをクリックすると、フォームが読み込まれ、5つを除くすべてのフィールドが無効に設定されます。とても簡単に思えますが、それを「汎用」関数にしたいと思います。つまり、私はこの方法を持っています:

function disableInputs(jQueryElement, exceptions, booleanClean) {
    //Some stuff
}

からすべての入力を取得したいのですが、jQueryElementを持つ ID を持つすべての要素を無視しますexceptionsExceptions次のようなオブジェクトです。

var exceptions = {
    0: 'clientId',
    1: 'clientName',
    2: 'clientFirstSurname',
    3: 'clientSecondSurname',
    4: 'clientAlias'
}

これは私の完全なコードであり、私がテストしたものですが、これが機能させる唯一の方法booleanCleanです.無効になっています。このブール値は、この関数が呼び出されたときに入力をクリーンアップするかどうかを確認するために機能します。value=''inputs

function disableInputs(jQueryElement, exceptions, booleanClean) {
    var inputs = jQueryElement.find('input');
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].setAttribute('disabled', true);
        for (var attr in exceptions) {
            if (inputs[i].getAttribute('id') === exceptions[attr]) {
                inputs[i].removeAttribute('disabled');
            } else {
                if (booleanClean === true) {
                    inputs[i].value = null;
                }
            }
        }
    }
}

クリーンな「オプション」が機能しない理由はわかっています。私が欲しいのは、それを適切に行うためにどこに置く必要があるか、または除外されていない入力のみを取得するように入力を取得するときに条件を設定できるかどうかです(最適化のための好ましい2番目のオプションであり、各入力に属性を設定せず、除外されている場合はそれらを削除します。作業がはるかに簡単に思えます)。

4

4 に答える 4

0

例外となる項目にクラス名を付けることができますか? それが私がすることです。

<input class="exception" />

$( "input:not(.exception)" ).prop("disabled", true);
于 2013-05-20T11:09:37.033 に答える