私のページにフォームがあります。すべてのフォームフィールドに値が設定されるまで、jQuery経由で送信ボタンを無効にします。サーバー側の検証もありますが、サーバーの負荷を軽減するためにクライアント側の検証を使用します。私は現在、配列内のフォームのすべての要素を保持し、私は各要素をループし、空であるかどうかを確認します。また、ユーザーがフォームにデータを入力するたびにこの関数を呼び出して、すべての入力が満たされているかどうかを確認する必要があります。これは私のブラウザに大きな負担をかけ、ページをクラッシュさせるようですが、以下はコードです。すべてのフォームフィールドに入力があるかどうかを調べる
let inputArray = [
$('.registration-form #inputEmail'),
$('.registration-form #inputForename'),
$('.registration-form #inputSurname'),
$('.registration-form #inputJobTitle'),
$('.registration-form #inputJobFunction'),
$('.registration-form #inputCompanyName'),
$('.registration-form #inputCompanySize')
];
let $registerButton = $('.create-account-button');
function checkFields() {
inputArray.forEach(function (input) {
if (!$(input).val()) {
$registerButton.prop('disabled', true);
} else {
$registerButton.prop('disabled', false);
}
input.on('input', checkFields);
});
}
あなたの問題を:あなたは無限ループで 'checkFieldsを()'呼び出しています。それはあなたのブラウザをクラッシュさせます。代わりに、(1)クラスを検証するすべての入力を与え、(2)これらのすべての入力に 'onInput'イベントをバインドし、(3)入力のいずれかが存在するときに登録ボタンを無効にするコールバックを配置します空の。 – Terry