cf_threeselectscombo?

anyone know of (or interested in $ to build?) a cf_threeselectscombo?

in the manner of the NateWeiss cf_twoselectscombo - I need three! where I can select the contents of box 1 - and move bi-directionally into box 2 ... which displays the content I can bi-directionally select into box 3.

many thanks.
R
rcbuchananAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

mrichmonCommented:
yes.

Macromedia Extentions Exchange (Note I shortened the URLs, but they are from the official Macromeida site)

2 Related Selects:
http://tinyurl.com/2fa2k

3 Related Selects :
http://tinyurl.com/ys839
0
rcbuchananAuthor Commented:
No. I don't think you read me post as well as might.
I understand the 3 and 2 related SELECTS ...

but i need the abilities of the CF_twoselectsCOMBO (but for THREE combo boxes, not TWO!)
i.e. I need to be able to select contents of THREE combo boxes with bi-directional move from / to abilities.

R
0
mrichmonCommented:
oh I see sorry.

I think that when you add in the last part of your request "with bi-directional move from / to abilities" that you are getting more complex than what is out there.  I think you would have to write this or have someone do so for you (which I know you also mentioned was an option up above).

Sorry I don't know of anything that does this that is readily available
0
Cloud Class® Course: Microsoft Azure 2017

Azure has a changed a lot since it was originally introduce by adding new services and features. Do you know everything you need to about Azure? This course will teach you about the Azure App Service, monitoring and application insights, DevOps, and Team Services.

James RodgersWeb Applications DeveloperCommented:
I am working on a cf solution for this but in the mean time here is some js that can be added to any page and will work for n number of selects, you just need to code in the function calls in the form elements, the cf will allow for dynamic element creation based on the elements of a list - should be done later

here the js version

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
     <title>Untitled</title>
<script>
var obj;
function lateralShift(selFrom, selTo) {
    var i ;
       with (document.forms[0]) {
            SelRight = selFrom.selectedIndex;
         
            if ((SelRight >= 0)  && (selFrom.selectedIndex < selFrom.options.length)) {
        selTo.options[selTo.options.length] = new Option(selFrom.options[SelRight].text, selFrom.options[SelRight].value);

        with (selFrom) {
          for (i=SelRight; i < options.length; i++) {
                        if (i < options.length-1)
              options[i] = new Option(options[i+1].text, options[i+1].value);
                      }
          options.length --;

          if (SelRight < options.length) selectedIndex = SelRight;
                        else selectedIndex = options.length - 1;
        }
       
               }
          }
     }

     
function verticalShift(objSel, vDir){
var Sel, SelTo, Last, TempT, TempV;
 
       with (document.forms[0]) {
            Sel   = objSel.selectedIndex;
            SelTo = objSel.selectedIndex + vDir;
               Last  = objSel.options.length;

               if ((Sel > 0) && (Sel < Last - 1) || (Sel >= 0) && (vDir==1)) {
           with (objSel) {              
          TempT = options[Sel].text;
          TempV = options[Sel].value;
          options[Sel] = new Option( options[SelTo].text, options[SelTo].value);
          options[SelTo] = new Option( TempT, TempV );
                         selectedIndex = SelTo;
                    }    
               }    
          }
    //#Attributes.OnChange#;


}

</script>
</head>

<body>
<form name="myForm" method="post" action="" onsubmit="">
<TABLE><TR VALIGN="top"><TD>

<SELECT NAME="mySel1" ID="trak" SIZE="10" STYLE="width:100" MULTIPLE onClick="obj=this" onDblClick="lateralShift(this, this.form.mySel2)">
 <OPTION VALUE="">Select an option to move</option>
 <OPTION VALUE="">1</option>
 <OPTION VALUE="">11</option>
 <OPTION VALUE="">111</option>
 <OPTION VALUE="">1111</option>
 <OPTION VALUE="">11111</option>
 <OPTION VALUE="">111111</option>
 <OPTION VALUE="">1111111</option>
 <OPTION VALUE="">11111111</option>
 <OPTION VALUE="">111111111</option>
 <OPTION VALUE="">1111111111</option>
</SELECT></TD><TD>

  <INPUT TYPE="BUTTON" VALUE=">>" onClick="lateralShift(this.form.mySel1, this.form.mySel2)"><BR>
  <INPUT TYPE="BUTTON" VALUE="<<" onClick="lateralShift(this.form.mySel2, this.form.mySel1)">

</TD><TD>

<SELECT NAME="mySel2" SIZE="10" STYLE="width:100" MULTIPLE onChange="" onClick="obj=this" onDblClick="lateralShift(this.form.mySel2, this.form.mySel1)">
  <OPTION VALUE="">

</SELECT></TD><TD>

  <INPUT TYPE="BUTTON" VALUE=">>" onClick="lateralShift(this.form.mySel2, this.form.mySel3)"><BR>
  <INPUT TYPE="BUTTON" VALUE="<<" onClick="lateralShift(this.form.mySel3, this.form.mySel2)">

</TD><TD>

<SELECT NAME="mySel3" SIZE="10" STYLE="width:100" MULTIPLE onChange="" onClick="obj=this" onDblClick="lateralShift(this.form.mySel2, this.form.mySel1)">
  <OPTION VALUE="">

</SELECT></TD><TD>
  <INPUT TYPE="BUTTON" VALUE="UP" onClick="verticalShift(obj,-1)"><BR>
  <INPUT TYPE="BUTTON" VALUE="DN" NAME="BtnDn" onClick="verticalShift(obj,1)">

</TD></TR></TABLE>


 


</form>
</body>
</html>
0
rcbuchananAuthor Commented:
Looks great. I'll give it a go!
The CF version would be terrific!
0
James RodgersWeb Applications DeveloperCommented:
ok... here it is in cf... handles 2 to n selects
still needs some more work but is fully functional
here is the call

<HTML>
  <HEAD><TITLE>MultiSelectsCombo Demo</TITLE></HEAD>
</HTML>

<BODY>
<FORM ACTION="Whatever.cfm" METHOD="POST" onSubmit="">

  <CF_MultiSelectsCombo
    SELECTNAMELIST="L1,L4,L5,L2,l3"
      SELECTCAPTIONLIST="L1,L3,L23,L41,L4"
      SELECTVALUESLIST="1,2,3,4,5"
      SELECTDISPLAYLIST="One,Two,Three,Four,Five"
      SELECTWIDTHLIST="150px"
    SELECTSIZE="6"  
  >
 <INPUT TYPE="SUBMIT">

</FORM>

</BODY>

save the following as MultiSelectsCombo.cfm in the custom tag directory or in the same directory in whic you are running the code


<!--- SUSPEND OUTPUT TO ELIMINATE WHITESPACE --->
<CFSETTING ENABLECFOUTPUTONLY="YES">

<!--- TAG PARAMETERS --->
<CFPARAM NAME="Attributes.SELECTNAMELIST">
<CFPARAM NAME="Attributes.SELECTCAPTIONLIST">
<CFPARAM NAME="Attributes.SELECTVALUESLIST" DEFAULT="">
<CFPARAM NAME="Attributes.SELECTDISPLAYLIST">
<CFPARAM NAME="Attributes.SELECTSIZE" DEFAULT="6">
<CFPARAM NAME="Attributes.SELECTWIDTHLIST" DEFAULT="150px">
<CFPARAM NAME="Attributes.Up" DEFAULT="Yes">
<CFPARAM NAME="Attributes.Down" DEFAULT="Yes">
<CFPARAM NAME="Attributes.Left" DEFAULT="Yes">
<CFPARAM NAME="Attributes.Right" DEFAULT="Yes">
<CFPARAM NAME="Attributes.UpText" DEFAULT="Up">
<CFPARAM NAME="Attributes.DownText" DEFAULT="Dn">
<CFPARAM NAME="Attributes.LeftText" DEFAULT="<<">
<CFPARAM NAME="Attributes.RightText" DEFAULT=">>">
<CFPARAM NAME="Attributes.FormName" DEFAULT="forms[0]">
<CFPARAM NAME="Attributes.AutoInit" DEFAULT="Yes">
<CFPARAM NAME="Attributes.DblClick1" DEFAULT="Yes">
<CFPARAM NAME="Attributes.DblClick2" DEFAULT="Yes">
<CFPARAM NAME="Attributes.Delimiter" DEFAULT=",">

<cfif listLen(Attributes.SELECTNAMELIST) GTE 2>
<cfif listLen(Attributes.SELECTNAMELIST) EQ listLen(Attributes.SELECTCAPTIONLIST)>
<cfif listLen(Attributes.SELECTVALUESLIST) EQ listLen(Attributes.SELECTDISPLAYLIST) and listLen(Attributes.SELECTVALUESLIST)>
<CFHTMLHEAD TEXT="
<script>
var obj;
function lateralShift(selFrom, selTo) {
    var i ;
        with (document.#Attributes.FormName#) {
              SelRight = selFrom.selectedIndex;
            
            if ((SelRight >= 0)  && (selFrom.selectedIndex < selFrom.options.length)) {
              selTo.options[selTo.options.length] = new Option(selFrom.options[SelRight].text, selFrom.options[SelRight].value);

              with (selFrom) {
                     for (i=SelRight; i < options.length; i++) {
                                  if (i < options.length-1)
                          options[i] = new Option(options[i+1].text, options[i+1].value);
                          }
                      options.length --;

                      if (SelRight < options.length) selectedIndex = SelRight;
                          else selectedIndex = options.length - 1;
              }
       
            }
      }
}

      
function verticalShift(objSel, vDir){
var Sel, SelTo, Last, TempT, TempV;
 
        with (document.#attributes.FormName#) {
            Sel   = objSel.selectedIndex;
            SelTo = objSel.selectedIndex + vDir;
            Last  = objSel.options.length;

                  if ((Sel >= 0 && vDir==1 && Sel < Last -1) || (Sel <= Last && Sel > 0 && vDir ==-1)) {
            with (objSel) {                  
          TempT = options[Sel].text;
          TempV = options[Sel].value;
          options[Sel] = new Option( options[SelTo].text, options[SelTo].value);
          options[SelTo] = new Option( TempT, TempV );
                              selectedIndex = SelTo;
                        }      
                  }      
            }
}

</script>
">
<cfoutput>

<TABLE><TR VALIGN="top"><TD>
#listFirst(ATTRIBUTES.SELECTCAPTIONLIST)#<SELECT NAME="#listFirst(ATTRIBUTES.SELECTNAMELIST)#" SIZE="#ATTRIBUTES.SELECTSIZE#" STYLE="width:#listFirst(Attributes.SELECTWIDTHLIST)#" MULTIPLE onClick="obj=this" onDblClick="lateralShift(this, this.form.#listGetAt(Attributes.SELECTNAMELIST,2)#)">
 <cfloop from="1" to="#listLen(Attributes.SELECTDISPLAYLIST)#" index="idx">
       <option value="<cfif listLen(Attributes.SELECTVALUESLIST)>#listGetAt(Attributes.SELECTVALUESLIST,idx)#</cfif>">#listGetAt(Attributes.SELECTDISPLAYLIST,idx)#</option>
 </cfloop>
</SELECT></TD><TD>

  <INPUT TYPE="BUTTON" VALUE="#Attributes.RightText#" onClick="lateralShift(this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,1)#, this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,2)#)"><BR>
  <INPUT TYPE="BUTTON" VALUE="#Attributes.LeftText#" onClick="lateralShift(this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,2)#, this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,1)#)">

</TD>
<cfloop from="2" to="#evaluate(listLen(ATTRIBUTES.SELECTNAMELIST)-1)#" index="idx">

<TD>
#listGetAt(ATTRIBUTES.SELECTCAPTIONLIST,idx)#<SELECT NAME="#listGetAt(ATTRIBUTES.SELECTNAMELIST,idx)#" SIZE="#ATTRIBUTES.SELECTSIZE#" STYLE="width:#listFirst(Attributes.SELECTWIDTHLIST)#" MULTIPLE onClick="obj=this" onDblClick="lateralShift(this, this.form.#listGetAt(Attributes.SELECTNAMELIST,idx+1)#)">
</SELECT></TD><TD>

  <INPUT TYPE="BUTTON" VALUE="#Attributes.RightText#" onClick="lateralShift(this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,idx)#, this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,idx+1)#)"><BR>
  <INPUT TYPE="BUTTON" VALUE="#Attributes.LeftText#" onClick="lateralShift(this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,idx+1)#, this.form.#listGetAt(ATTRIBUTES.SELECTNAMELIST,idx)#)">

</TD>
</cfloop>
<TD>

#listLast(ATTRIBUTES.SELECTCAPTIONLIST)#<SELECT NAME="#listLast(ATTRIBUTES.SELECTNAMELIST)#" SIZE="#ATTRIBUTES.SELECTSIZE#" STYLE=STYLE="width:#listLast(Attributes.SELECTWIDTHLIST)#" MULTIPLE onChange="" onClick="obj=this" onDblClick="">

</SELECT></TD><TD>
  <INPUT TYPE="BUTTON" VALUE="UP" onClick="verticalShift(obj,-1)" style="width:25px"><BR>
  <INPUT TYPE="BUTTON" VALUE="DN" NAME="BtnDn" onClick="verticalShift(obj,1)" style="width:25px">

</TD></TR></TABLE>
</cfoutput>
<cfelse>
      <cfoutput>Error: SELECTVALUESLIST contains #listLen(Attributes.SELECTVALUESLIST)# values,<br>SELECTDISPLAYLIST list contains #listLen(Attributes.SELECTDISPLAYLIST)# values.<br>The lists must contain the same number of items.</cfoutput>
</cfif>
<cfelse>
      <cfoutput>Error: SELECTNAMELIST contains #listLen(Attributes.SELECTNAMELIST)# values,<br>SELECTCAPTIONLIST list contains #listLen(Attributes.SELECTCAPTIONLIST)# values.<br>The lists must contain the same number of items.</cfoutput>
</cfif>
<cfelse>
      <cfoutput>Error: SELECTNAMELIST contains #listLen(Attributes.SELECTNAMELIST)# values;<br>A minimum of two values must be provided.</cfoutput>
</cfif>
<!--- RESUME NORMAL OUTPUT --->
<CFSETTING ENABLECFOUTPUTONLY="NO">
0
James RodgersWeb Applications DeveloperCommented:
rbuchanan,
hows this working out?
0
rcbuchananAuthor Commented:
sorry jester, was out of town travelling yesterday.
shall try your terrific code today and will respond asap.

thanks again!
R
0
James RodgersWeb Applications DeveloperCommented:
no need to apologize...
0
rcbuchananAuthor Commented:
Jester:
Well - it's looking like it should ... but I do have a couple of questions, if I may.

Firstly, and minorly, :
I called the function as this:

<FORM ACTION="Whatever.cfm" METHOD="POST" onSubmit="">

  <CF_MultiSelectsCombo
    SELECTNAMELIST="demo,value,select"
      SELECTCAPTIONLIST="demo,value,select"
    SELECTVALUESLIST="1,3,2,4,5,6,7,10,12,15,8"
    SELECTDISPLAYLIST="One,Three,Two,Four,Five,Six,Seven,Ten,Twelve,Fifteen,Eight"
    SELECTWIDTHLIST="150px"
    SELECTSIZE="20"  
  >
 <INPUT TYPE="SUBMIT">


The THIRD combo box ('select') width is not 150px. Rather it adjusts its width to the width of the value inside it - verus the fixed (150px) width of box 1 & 2.

More importantly, ...

I'm NOT sure how to do this:

In BOX 1 ... I need to show these values (to be selected)
- gender
- age
- marital status
- country
- state
- occupation
- political skew
- income
- education
- ethnicity
- religion.

SO - when the user CLICKS on 'STATE' in Box 1 (demo) ... Box 2 (value) displays the VALUES from the STATE selection (i.e. AZ, IL, WI, MA, MN etc).

WHEN the user clicks a STATE in Box 2 (value) ... that selected value is moved to BOX3 (select).

SO - if I THEN click on Box 1 (demo) - Education ... Box 2 (value) shows the values from Education ("some college", "high school", "graduate" etc)


Does this make sense?
I hope this is not over expecting.  I can use the CF you provided ... for other tasks I think.

The VALUES from ABOVE, btw, are label / code / datasets in my  mySQL database.

Richard
0
James RodgersWeb Applications DeveloperCommented:
width issue
in the last section of teh code there is a select with listlast, in the code for that select i have style=style=, typo causes teh select to get screwed up. just remove one of the style=

the second part is more complicated, i reviewed the code at teh nate weiss site and just augmented it for more than 2 selects, what you are looking for is a combination of cf_twoselectsrelated and cf_twoselectscombo  it can be done but it will take a while, and it will all need to be done client side as to refresh from the db after each seklection in the first box would require a lot of codiong to keep the existing selected values in place.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
James RodgersWeb Applications DeveloperCommented:
check this, see if it helps, it will take time to make it all cf but you can populate the initial javascript array with 1 or more cfqueries

<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>
        Untitled
    </title>
<script language="JavaScript" type="text/javascript">
var obj;
function lateralShift(selFrom, selTo) {
    var i ;
        with (document.forms[0]) {
              SelRight = selFrom.selectedIndex;
            
            if ((SelRight >= 0)  && (selFrom.selectedIndex < selFrom.options.length)) {
              selTo.options[selTo.options.length] = new Option(selFrom.options[SelRight].text, selFrom.options[SelRight].value);

              with (selFrom) {
                     for (i=SelRight; i < options.length; i++) {
                                  if (i < options.length-1)
                          options[i] = new Option(options[i+1].text, options[i+1].value);
                          }
                      options.length --;

                      if (SelRight < options.length) selectedIndex = SelRight;
                          else selectedIndex = options.length - 1;
              }
       
            }
      }
}

      
function verticalShift(objSel, vDir){
var Sel, SelTo, Last, TempT, TempV;
 
        with (document.forms[0]) {
            Sel   = objSel.selectedIndex;
            SelTo = objSel.selectedIndex + vDir;
            Last  = objSel.options.length;

                  if ((Sel >= 0 && vDir==1 && Sel < Last -1) || (Sel <= Last && Sel > 0 && vDir ==-1)) {
            with (objSel) {                  
          TempT = options[Sel].text;
          TempV = options[Sel].value;
          options[Sel] = new Option( options[SelTo].text, options[SelTo].value);
          options[SelTo] = new Option( TempT, TempV );
                              selectedIndex = SelTo;
                        }      
                  }      
            }
}


      var arrItems = new Array();
     var isVisible=0;
     function listItem(itemGroup, itemValue, itemText){
          this.itemGroup=itemGroup;
          this.itemValue=itemValue;
          this.itemText=itemText;
     }
     
     function populateSubList(groupID, objSub){
//this block clears the current listings in the second dropdown, if the dropdown has any
          objSub.selectedIndex=0;
          isVisible=0;
          if(objSub.options.length>0){
               for (x=objSub.options.length; x>=0; x--){
                    objSub.options[x]=null;
               }
          }
//this block populates the second drop down, by matching the selected value of dropdown 1
//to the lookup value of the list items
          for(x=0; x < arrItems.length; x++){
               if(arrItems[x].itemGroup==groupID){
                    listOpt = document.createElement("option") ;
                    listOpt.value = arrItems[x].itemValue ;
                    listOpt.text = arrItems[x].itemText ;
                    objSub.add(listOpt) ;
               }
          }

     }
     
// arrayItem = new listItem(lookupcode, listItem value, listItem Text)
// arrayItem = new listItem(categorycode, productcode, product text)
     arrItems[arrItems.length] = new listItem("M","M1","Suzuki");
     arrItems[arrItems.length] = new listItem("M","M3","Honda");
     arrItems[arrItems.length] = new listItem("M","M6","Titan");
     arrItems[arrItems.length] = new listItem("M","M4","Buccatti");
     arrItems[arrItems.length] = new listItem("M","M5","BMW");
     arrItems[arrItems.length] = new listItem("M","M2","Harley Davidson");
     arrItems[arrItems.length] = new listItem("C","C29","Corvette");
     arrItems[arrItems.length] = new listItem("C","C13","Ferrarri");
     arrItems[arrItems.length] = new listItem("C","C7","Lamborghini");
     arrItems[arrItems.length] = new listItem("C","C99","Viper");
     arrItems[arrItems.length] = new listItem("C","C4","Mustang");
     arrItems[arrItems.length] = new listItem("C","C20","GTO");
     arrItems[arrItems.length] = new listItem("C","C21","De Lorean");
     arrItems[arrItems.length] = new listItem("P","P1","Cessna");
     arrItems[arrItems.length] = new listItem("P","P23","767");
     arrItems[arrItems.length] = new listItem("P","P31","Airbus");
     arrItems[arrItems.length] = new listItem("P","P17","SST");
     arrItems[arrItems.length] = new listItem("P","P33","Sea Harrier");
     arrItems[arrItems.length] = new listItem("P","P10","F16");
     arrItems[arrItems.length] = new listItem("B","B34","Row Boat");
     arrItems[arrItems.length] = new listItem("B","B3","Cigarette Boat");
     arrItems[arrItems.length] = new listItem("B","B25","Fishing Boat");
     arrItems[arrItems.length] = new listItem("B","B19","Cabin Cruiser 6");
     arrItems[arrItems.length] = new listItem("T","T11","Hummer");
       arrItems[arrItems.length] = new listItem("M1","M1A","Bike1");
       arrItems[arrItems.length] = new listItem("M1","M1B","Bike2");
       arrItems[arrItems.length] = new listItem("M1","M1C","Bike3");
       arrItems[arrItems.length] = new listItem("M1","M1D","Bike4");
       arrItems[arrItems.length] = new listItem("M1","M1E","Bike5");
       arrItems[arrItems.length] = new listItem("M1","M1F","Bike6");
</script>
</head>
   <body>        
      <form name="frmGetTracker" action="displayTracker.cfm?RequestTimeout=500" onsubmit="" method="get">
           <table cellspacing="1" cellpadding="1" border="0" width="400" bgcolor="D8DFF3">
                <tr valign="top">
                     <td width="50%">
                          <table cellspacing="1" cellpadding="1" border="0" align="centre">
                               <caption>     View By :
                               </caption>
                               <tr valign="top">
                                    <td align="center">
                                         <select name="VOPT" style="width:160" onChange="populateSubList(this.value, document.frmGetTracker.VID)">
                                              <option value="0" selected>--Select Vehicle Type</option>
                                              <option value="M">Motorcycle</option>
                                              <option value="C">Car</option>
                                              <option value="T">Truck</option>
                                              <option value="B">Boat</option>
                                              <option value="P">Plane</option>
                                         </select>
                                    </td>
                               </tr>
                          </table>
                     </td>
                     <td>
                          <table cellspacing="1" cellpadding="1" border="0" width="100%">
                               <caption>     Select Name :
                               </caption>
                               <tr>
                                    <td align="center">
                                         <select name="VID" style="width:160" multiple size="6">
                                        </select>
                                    </td>
                               </tr>
                          </table>
                     </td>
                              
                              <td>
                                    <table>
                                          <caption>&nbsp;</caption>
                                          <tr>
                                    <TD>

  <INPUT TYPE="BUTTON" VALUE=">>" onClick="lateralShift(this.form.VID, this.form.L4)"><BR>
  <INPUT TYPE="BUTTON" VALUE="<<" onClick="lateralShift(this.form.L4, this.form.VID)">

</TD>


<TD>
L3<SELECT NAME="L4" SIZE="6" STYLE="width:150px" MULTIPLE onClick="obj=this" onDblClick="lateralShift(this, this.form.L5)">
</SELECT></TD><TD>

  <INPUT TYPE="BUTTON" VALUE=">>" onClick="lateralShift(this.form.L4, this.form.L5)"><BR>
  <INPUT TYPE="BUTTON" VALUE="<<" onClick="lateralShift(this.form.L5, this.form.L4)">

</TD>


<TD>
L23<SELECT NAME="L5" SIZE="6" STYLE="width:150px" MULTIPLE onClick="obj=this" onDblClick="lateralShift(this, this.form.L2)">
</SELECT></TD><TD>
  <INPUT TYPE="BUTTON" VALUE="UP" onClick="verticalShift(obj,-1)" style="width:25px"><BR>
  <INPUT TYPE="BUTTON" VALUE="DN" NAME="BtnDn" onClick="verticalShift(obj,1)" style="width:25px">

</TD></table>
                              </td></tr>
                              



                </tr>
           </table>
      </form>
   </body>
</html>
0
James RodgersWeb Applications DeveloperCommented:
heres an example of populating the array with cfqueries

<cfoutput query="getRegMgr">arrItems[arrItems.length] = new listItem("R","#REGID#","#REGMGR#");
      </cfoutput>
      <cfoutput query="getDivMgr">arrItems[arrItems.length] = new listItem("D","#MGRID#","#DIVMGR#");
      </cfoutput>

like i said turning it into a custom tag would take a more time
0
James RodgersWeb Applications DeveloperCommented:
did you check out my last 2 posts?
0
rcbuchananAuthor Commented:
yes, thanks Jester. it certainly makes sense!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Web Servers

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.