The Instructure Community will enter a read-only state on November 22, 2025 as we prepare to migrate to our new Community platform in early December. Read our blog post for more info about this change.
Found this content helpful? Log in or sign up to leave a like!
Hello hope have a wonderfull weekend
I'm wondering is there a setting in canvas that I can limit the professor to not grade empty online submission or a js code that can help with that?
Solved! Go to Solution.
There is no setting in Canvas to prevent grading an unsubmitted assignment. However, you can remove the grade input box by uploading a custom Javascript (JS).
Please note the following JS will only work on the web browser version of Canvas, and users can always disable it
The first script will hide the grade input box from /gradebook page and the flyout grading tray (For non Root Admin users)
if (window.location.href.match('/gradebook')) {
if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin then hide grade input box
var style = (function () {
// Create the <style> tag
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
// Add the <style> element to the page
document.head.appendChild(style);
return style;
})();
//CSS to hide grade input boxes
style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);
document.addEventListener('click', function (event) {
if (event.target.matches('#grade-detail-tray--grade-input')) {
alert("Please use SpeedGrader to grade");
document.getElementById('grade-detail-tray--grade-input').disabled = true;
};
});
};
}
The second script will hide the grade input box and rubric within the SpeedGrader
if (window.location.href.match('/gradebook')) {
if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin
var style = (function () {
// Create the <style> tag
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
// Add the <style> element to the page
document.head.appendChild(style);
return style;
})();
style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);
document.addEventListener('click', function (event) {
if (event.target.matches('#grade-detail-tray--grade-input')) {
alert("Please use SpeedGrader to grade");
document.getElementById('grade-detail-tray--grade-input').disabled = true;
$('span:contains("Excused")').remove();
};
});
};
}
// SpeedGrader Hide
if (window.location.href.match('/gradebook/speed_grader?')) {
console.log("In SpeedGrader Page")
SpeedGraderCheck();
//Run script again when users use the dropdown to change to another student
var pushState = history.pushState;
history.pushState = function () {
pushState.apply(history, arguments);
SpeedGraderCheck();
console.log("URL Change");
};
};
function SpeedGraderCheck() {
var currentURL = window.location.href;
var courseID = currentURL.match(/\/courses\/(\d+)/g);
var asID_Reg = /(?:^|assignment_id)=(\d*?)(?:\D|$)/g;
var asID_Result = asID_Reg.exec(currentURL);
var assignment_id = asID_Result[1];
var checkExist = setInterval(function () {
if (window.location.href.indexOf('student_id=') > -1) {
clearInterval(checkExist);
var NewCurrentURL = window.location.href;
var stdID_Reg = /(?:^|student_id)=(\d*?)(?:\D|$)/g;
var stdID_Result = stdID_Reg.exec(NewCurrentURL);
var student_id = stdID_Result[1];
//Call API to check the submission status
$.get('/api/v1' + courseID + '/assignments/' + assignment_id + '/submissions/' + student_id, function (response) {
if (response['workflow_state'] == 'unsubmitted') {
//Call API to check whether the assignment require submission
$.get('/api/v1' + courseID + '/assignments/' + assignment_id, function (response) {
if (response['submission_types'][0] != 'none') {
console.log("No Submission")
$('#grading-box-extended').attr('style', 'display: none !important');
$("button[class='toggle_full_rubric edit btn']").attr('style', 'display: none !important');
} else {
console.log("No Submission Required")
}
})
};
});
}
}, 500);
};
There is no setting in Canvas to prevent grading an unsubmitted assignment. However, you can remove the grade input box by uploading a custom Javascript (JS).
Please note the following JS will only work on the web browser version of Canvas, and users can always disable it
The first script will hide the grade input box from /gradebook page and the flyout grading tray (For non Root Admin users)
if (window.location.href.match('/gradebook')) {
if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin then hide grade input box
var style = (function () {
// Create the <style> tag
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
// Add the <style> element to the page
document.head.appendChild(style);
return style;
})();
//CSS to hide grade input boxes
style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);
document.addEventListener('click', function (event) {
if (event.target.matches('#grade-detail-tray--grade-input')) {
alert("Please use SpeedGrader to grade");
document.getElementById('grade-detail-tray--grade-input').disabled = true;
};
});
};
}
The second script will hide the grade input box and rubric within the SpeedGrader
if (window.location.href.match('/gradebook')) {
if (!(ENV.current_user_roles.indexOf('root_admin') > -1)) { //If not Root Admin
var style = (function () {
// Create the <style> tag
var style = document.createElement("style");
style.appendChild(document.createTextNode(""));
// Add the <style> element to the page
document.head.appendChild(style);
return style;
})();
style.sheet.insertRule('div.Grid__GradeCell__GradingSchemeInput, .Grid__GradeCell__PointsInput, .Grid__GradeCell__PercentInput { display:none !important;}', 0);
document.addEventListener('click', function (event) {
if (event.target.matches('#grade-detail-tray--grade-input')) {
alert("Please use SpeedGrader to grade");
document.getElementById('grade-detail-tray--grade-input').disabled = true;
$('span:contains("Excused")').remove();
};
});
};
}
// SpeedGrader Hide
if (window.location.href.match('/gradebook/speed_grader?')) {
console.log("In SpeedGrader Page")
SpeedGraderCheck();
//Run script again when users use the dropdown to change to another student
var pushState = history.pushState;
history.pushState = function () {
pushState.apply(history, arguments);
SpeedGraderCheck();
console.log("URL Change");
};
};
function SpeedGraderCheck() {
var currentURL = window.location.href;
var courseID = currentURL.match(/\/courses\/(\d+)/g);
var asID_Reg = /(?:^|assignment_id)=(\d*?)(?:\D|$)/g;
var asID_Result = asID_Reg.exec(currentURL);
var assignment_id = asID_Result[1];
var checkExist = setInterval(function () {
if (window.location.href.indexOf('student_id=') > -1) {
clearInterval(checkExist);
var NewCurrentURL = window.location.href;
var stdID_Reg = /(?:^|student_id)=(\d*?)(?:\D|$)/g;
var stdID_Result = stdID_Reg.exec(NewCurrentURL);
var student_id = stdID_Result[1];
//Call API to check the submission status
$.get('/api/v1' + courseID + '/assignments/' + assignment_id + '/submissions/' + student_id, function (response) {
if (response['workflow_state'] == 'unsubmitted') {
//Call API to check whether the assignment require submission
$.get('/api/v1' + courseID + '/assignments/' + assignment_id, function (response) {
if (response['submission_types'][0] != 'none') {
console.log("No Submission")
$('#grading-box-extended').attr('style', 'display: none !important');
$("button[class='toggle_full_rubric edit btn']").attr('style', 'display: none !important');
} else {
console.log("No Submission Required")
}
})
};
});
}
}, 500);
};
Thanks @jerry_nguyen,
Sorry for late response we where very busy with other issue and thanks for helping me with this this JS will change everything in a good way.
Community helpTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign inTo interact with Panda Bot, our automated chatbot, you need to sign up or log in:
Sign in