Difference between revisions of "Remove Options from a Combo Box Using JavaScript"
From SmartWiki
Julia Decker (talk | contribs) |
|||
Line 3: | Line 3: | ||
==Remove One or More Options== | ==Remove One or More Options== | ||
− | The following example removes two different [[Types]] available for new '''Level 2''' records ( | + | 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> | <pre> | ||
Line 27: | Line 27: | ||
− | If you wish to control this by 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...) | + | 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: | Include this in the variable section at the top of the script: | ||
Line 35: | Line 35: | ||
if (myrolelist.indexOf(",1234,")>=0) | if (myrolelist.indexOf(",1234,")>=0) | ||
− | ::''Note that you must test for greater than or equal to 0. If the role is the first | + | ::''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.'' |
Revision as of 11:53, 30 October 2009
You can use a JavaScript function to modify the options available in a pull-down box on the page.
Remove One or More Options
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):
function RemoveTypes() { var i=0; var frm = document.forms[0]; // at Level 1 use document.form1 instead of document.forms[0] 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();
If you wish to control this by 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'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:
// 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; } }