Mise à jour:
@Simeon fait un commentaire important et il a raison. Pour résoudre ce problème, vous pouvez vérifier la valeur de chaque champ et voir si elle est vide ou non:
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);
j'espérais pour éviter l'inspection tous les domaines à chaque changement, mais il semble que ce soit inévitable.
réponse originale:
Vous devrait garder une trace des champs ont changé. Si vous avez plus d'un champ de téléchargement de fichiers, vous devez utiliser des classes, pas d'ID:
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);
De plus, si vous utilisez jQuery de toute façon, alors cohérente et l'utiliser tout au long du script. Surtout ne pas utiliser addEventListener
, ce qui ne fonctionne pas dans IE8 et ci-dessous. jQuery est là pour abstraire des différences de ce navigateur.
Cela fonctionne comme un charme, merci :) –
Si l'utilisateur change une sélection de fichier plusieurs fois cela produira un résultat incorrect, car l'événement 'change' est exécuté chaque fois que le fichier est modifié – Simeon
@Simeon: True .Bon point .Mon mis à jour ma réponse. –