Introduction
During certain scenarios, we must make all CRM form fields as read-only. To achieve this functionality explicit logic should be written using JavaScript with form controls that are available on the form. Contact form was used to show this functionality.
Step 1
Login to the required environment and select required solution [Contact Customizations Solution in this case] as shown in the below figure.
Step 2
After Step 1, select contact web resource in solution and click on Edit as shown in the below figure.
Step 3
After Step 2, use below code to get all form controls present on a form
‘use strict’;
var formControls = formContext.getControl();
Step 4
After Step 3, loop through formControls variable and make each control as readonly by using setDisabled property as true by using below code
formControls.forEach(control => {
control.setDisabled(true);
});
Step 5
After Step 4, include code present in Step 3 and Step 4 inside a function and below is the code
function disableformcontrols(executionContext) {
'use strict';
let formContext = executionContext.getFormContext();
if (formContext !== null && formContext != 'undefined') {
var formControls = formContext.getControl();
formControls.forEach(control => {
control.setDisabled(true);
});
}
}
Step 6
After Step 5, call function from respective event in this case from handleOnLoad function and the final code looks like below
if (typeof(ContosoVaccination) == "undefined") {
var ContosoVaccination = {
__namespace: true
};
}
if (typeof(ContosoVaccination.Scripts) == "undefined") {
ContosoVaccination.Scripts = {
__namespace: true
};
}
ContosoVaccination.Scripts.ContactForm = {
handleOnLoad: function(executionContext) {
console.log('on load - contact form');
disableformcontrols(executionContext);
},
__namespace: true
}
function disableformcontrols(executionContext) {
'use strict';
let formContext = executionContext.getFormContext();
if (formContext !== null && formContext != 'undefined') {
var formControls = formContext.getControl();
formControls.forEach(control => {
control.setDisabled(true);
});
}
}
Step 7
After Step 6, save function and update Webresource with this file and publish it on the contact form and open any contact and observe all fields as readonly as shown in the below figure
Note
Make sure to publish all customizations and upload JavaScript (js) file.
Conclusion
In this way, one can easily make all fields present on a CRM form as readonly with javascript as webresource.