更新:
@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);
我希望避免檢查每個變化各個領域,但似乎這是不可避免的。
原來的答覆:
你將不得不跟蹤哪些領域發生了變化。如果你有一個以上的文件上傳領域,你必須使用類,而不是標識:
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有從這個瀏覽器中抽象出來的差異。
它的作用就像一個魅力,謝謝:) –
如果用戶改變多次選擇文件會產生不正確的結果,因爲每次文件改變時都會運行「change」事件 – Simeon
@Simeon:真的,好點,更新了我的答案。 –