Managed to figure it out, using the validators. For anyone that might need it:
var fileRequired = function(fieldName) {
try {
if ($("#" + fieldName) != undefined) {
$("#" + fieldName).prop('required', true);
$("#" + fieldName).closest(".control").prev().addClass("required");
// Create new validator
var Requiredvalidator = document.createElement('span');
Requiredvalidator.style.display = "none";
Requiredvalidator.id = fieldName + "Validator";
Requiredvalidator.controltovalidate = fieldName;
Requiredvalidator.errormessage = "<a href='#" + fieldName + "'> File is mandatory";
Requiredvalidator.initialvalue = "";
Requiredvalidator.evaluationfunction = function() {
var inputFile = $('#AttachFile').val();
if (inputFile == "") {
return false;
} else {
return true;
}
};
// Add the new validator to the page validators array:
Page_Validators.push(Requiredvalidator);
}
} catch (error) {
errorHandler(error);
}
}
var fileNotRequired = function(fieldName) {
try {
if ($("#" + fieldName) != undefined) {
$("#" + fieldName).closest(".control").prev().removeClass("required");
$("#" + fieldName).prop('required', false);
for (i = 0; i < Page_Validators.length; i++) {
if (Page_Validators[i].id == fieldName + "Validator") {
Page_Validators.splice(i);
}
}
}
} catch (error) {
errorHandler(error);
}
}
And then use when needed (fieldName is <input> ID of the file upload):
fileNotRequired("AttachFile");
fileRequired("AttachFile");