Changes

Remove Options from a Combo Box Using JavaScript

2,111 bytes added, 15:30, 12 June 2014
See Also
You can use a JavaScript function to modify the options available in a pull-down box on the page.
==Remove One or More Options==''Example 1,'' The following example removes two different [[Types]] available for new '''Level 2''' records(useful if you need to define complex criteria for what type of Level 2 records can be created):
<pre>
function RemoveTypes() {
var i=0;
var frm = document.forms[0]frmevent;// at Level 1 use document.form1 instead of document.forms[0]frmevent 
if (frm.eventid.value==0)
// Note: this loop starts at the bottom to avoid skipping any due to re-indexing as they are removed.
for (i=frm.eventtype.options.length-1;i>=0;i--)
{
if (frm.eventtype.options[i].text=='FirstType' || frm.eventtype.options[i].text=='SecondType') frm.eventtype.options[i]=null;}}}RemoveTypes(); </pre> ''Example 2,'' The following example removes a Branch on '''Level1''' from the Branch drop down list. <pre>function RemoveBranches(){var i=0;var frm=document.form1;// Note: this loop starts at the bottom to avoid skipping any due to re-indexing as they are removed.for(i=3;i>=0;i--){ if (frm.eventtypebranchid.options[i].textvalue=='SecondType448060') //448060 is a Branch id frm.eventtypebranchid.options[remove(i]=null);}
}
RemoveBranches();
 
</pre>
 
''Example 3,''
 
The following example also removes Branches on '''Level1''' from the Branch drop down list.
 
<pre>
function RemoveBranches()
{
var i=0;
var frm=document.form1;
if(frm){
// Note: this loop starts at the bottom to avoid skipping any due to re-indexing as they are removed.
for(i=(frm.branchid.options.length-1);i>=0;i--){
if (frm.branchid.options[i].value!=1111 && frm.branchid.options[i].value!=2222 && frm.branchid.options[i].value!=3333 &&frm.branchid.options[i].value!=4444){
frm.branchid.remove(i);
}
}
}
}
RemoveTypesRemoveBranches(); </pre> If you wish to control this by [[Role|role]] (for example if you want a role to be able to view existing Level 2 records of a given [[Type]], but not create them...) Include this in the variable section at the top of the script: var myrolelist="@me.rolelist@"; And replace or include the following in the if logic section: if (myrolelist.indexOf(",1234,")>=0) ::''Note that you must test for greater than or equal to 0. If the role is the first listed in the [[User|user]]'s role list it will return a 0 rather than a 1 because of the preceding comma.''
==To Remove All Options Except the Selected==
* The following script will prevent users from changing the Level 2 Type once the record has been saved:
<pre>
// For existing Types remove all options from the Type field (except the selected) so it can't be changed
if (frm.eventid.value!=0)
{
for (i=frm.eventtype.options.length-1;i>=0;i--)
{
if (frm.eventtype.options[i].value!=frm.eventtype.value)
frm.eventtype.options[i]=null;
}
}
</pre>
'''Note:''' the same syntax can be used at Level 1, replacing '''document.forms[0]''' with '''document.form1'''
==See Also==
* [[Add Options to a Combo Box Using JavaScript]]
* [[Conditional Lists of Values]]
[[Category:JavaScript]]
8,849
edits