How to allow user to select only two checkbox in service catalog

Sachin G K1
Kilo Sage

Hi All,

 

I want to allow user to select only 2 checkbox and other 2 should be readonly.How to achieve this?

SachinGK1_0-1708234287647.png

 

1 ACCEPTED SOLUTION

kamlesh kjmar
Mega Sage
Mega Sage

Hi Sachin,

 

Try the below script, and make sure of below points:

1. If you are having 4 checkboxes, then you need to write 4 onChange client script one for each checkbox. But code in each script will remain the same. Only replace the backend name of checkbox with your's [That's only change needed in the script]. For me this scripts works as per your requirement. In my example I have 5 checkboxes where you can select only 2 checkboxes (any).

 

 

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var checkBoxes = ["checkbox1", "checkbox2","checkbox3","checkbox4","checkbox5"]; //Replace backend name of all checkboxes
var uncheckedBoxes = [];
var checkedBoxes = [];
checkBoxes.forEach(function(item){
if(g_form.getValue(item) == "false")
uncheckedBoxes.push(item);
else
checkedBoxes.push(item);
})
if(checkedBoxes.length == 2){
uncheckedBoxes.forEach(function(item){
	g_form.setReadOnly(item,true);
});
}
else{
	uncheckedBoxes.forEach(function(item){
	g_form.setReadOnly(item,false);
});
}
   
}

 

 

kamleshkjmar_0-1708252275425.png

 

 

Let me know if this works for you.

 

Please mark my response as Correct if it solves your problem and hit Helpful if this rings the bell.

 

Thanks,

Kamlesh

View solution in original post

16 REPLIES 16

kamlesh kjmar
Mega Sage
Mega Sage

Hi Sachin,

 

Try the below script, and make sure of below points:

1. If you are having 4 checkboxes, then you need to write 4 onChange client script one for each checkbox. But code in each script will remain the same. Only replace the backend name of checkbox with your's [That's only change needed in the script]. For me this scripts works as per your requirement. In my example I have 5 checkboxes where you can select only 2 checkboxes (any).

 

 

function onChange(control, oldValue, newValue, isLoading) {
   if (isLoading || newValue == '') {
      return;
   }

   var checkBoxes = ["checkbox1", "checkbox2","checkbox3","checkbox4","checkbox5"]; //Replace backend name of all checkboxes
var uncheckedBoxes = [];
var checkedBoxes = [];
checkBoxes.forEach(function(item){
if(g_form.getValue(item) == "false")
uncheckedBoxes.push(item);
else
checkedBoxes.push(item);
})
if(checkedBoxes.length == 2){
uncheckedBoxes.forEach(function(item){
	g_form.setReadOnly(item,true);
});
}
else{
	uncheckedBoxes.forEach(function(item){
	g_form.setReadOnly(item,false);
});
}
   
}

 

 

kamleshkjmar_0-1708252275425.png

 

 

Let me know if this works for you.

 

Please mark my response as Correct if it solves your problem and hit Helpful if this rings the bell.

 

Thanks,

Kamlesh

abirakundu23
Mega Sage

Hi @Sachin G K1 ,

is your purpose solved? If yes, please mark my solution Helpful & Accept answer.