Обновление:
@ Симеон сделал важный комментарий, и он прав.Чтобы решить эту проблему, вы можете проверить значение каждого поля и посмотреть, является ли оно пустым или нет:
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);
Я надеялся избежать проверки каждого поля при каждом изменении, но, похоже, это неизбежно.
Оригинальный ответ:
Вы должны отслеживать, какие поля были изменены.Если у вас есть более одного поля для загрузки файла, вы должны использовать классы, а не идентификаторы:
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);
Кроме того, если вы все равно используете jQuery, будьте последовательны и используйте его в скрипте.Особенно не используйте addEventListener
, который не работает в IE8 и ниже.jQuery предназначен для абстрагирования от этого браузера различий.