更新:
@Simeonは重要なコメントをしたし、彼は正しいです。この問題を解決するには、各フィールドの値を検査し、それが空であるかどうかを確認できます
var $fields = $('.thumbimg'),
$submit = $("input.imgcheck"),
numRequiredFields = $fields.length; // or 3 as per your comment (somewhere)
function runOnChange() {
var $filledFields = $fields.filter(function(){
return $(this).val() !== "";
});
if($filledFields.length >= numRequiredFields)
// all fields changed
// run logic here
$submit.attr("disabled", "");
}
else {
$submit.attr("disabled", "disabled");
}
}
$fields.change(runOnChange);
が、私は、各変化にすべてのフィールドを検査避けることを望んだが、これは避けられないようです。
オリジナルの答え:
あなたはフィールドが変更されているのを追跡する必要があります。とにかくjQueryのを使用している場合
また
var numFields = $('.thumbimg').length,
changedFields = 0;
function runOnChange() {
changedFields++;
if(changedFields >= numFields) {
// all fields changed
// run logic here
$("input.imgcheck").attr("disabled", "");
}
}
$('.thumbimg').change(runOnChange);
、その後、一貫して、スクリプト全体でそれを使用する:あなたは複数のファイルアップロードフィールドを持っている場合は、クラスではなく、IDを使用する必要があります。特にIE8以下では動作しないaddEventListener
は使用しないでください。 jQueryは、このブラウザの違いから抽象的なものです。
?実行おかげdoes't $(「入力し、入力2」)。変更(機能(... ように。:) –
ユーザーが変更された場合のようにファイルを何回か選択すると、ファイルが変更されるたびに 'change'イベントが実行されるので、不正な結果が生成されます – Simeon
@Simeon:True。良い点。私の答えを更新しました。 –