約 25 の入力 (テキスト、ラジオ、チェックボックス) を持つ拡張フォームがあります。jQueryダイアログを開くボタンをクリックすると、フォームが読み込まれ、5つを除くすべてのフィールドが無効に設定されます。とても簡単に思えますが、それを「汎用」関数にしたいと思います。つまり、私はこの方法を持っています:
function disableInputs(jQueryElement, exceptions, booleanClean) {
//Some stuff
}
からすべての入力を取得したいのですが、jQueryElement
を持つ ID を持つすべての要素を無視しますexceptions
。Exceptions
次のようなオブジェクトです。
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番目のオプションであり、各入力に属性を設定せず、除外されている場合はそれらを削除します。作業がはるかに簡単に思えます)。