Hi all, I am running into a problem here and I think there must be a better way to do this. I have two scrolling_list objects that are printed from a CGI script. On the same page I also dump out some javascript that allows moving of one (or more than one) item from the scrolling_list to the other list and vv. I also have a submit button. when the form gets submitted back to the perl script it seems as though CGI.pm only shows items that were selected (highlighted) durring the submission -- not the list of items currently in the scrolling_list. I have read CGI.pm (see my head spinning lol) and I cant figure out if it is scoping the entire list out of the submit or if the lists dont get sent durring a submit. At this point I am thinking of creating an -onSubmit JS function to push the current items in the two select lists to a hidden var before submit. Is there an easier way to do this? here is some example code (not real code from my app cause it is too clunky..


use CGI; $query = new CGI; print $query->header; print <<EOF ; <SCRIPT LANGUAGE="JavaScript"> function move(fbox, tbox) { var arrFbox = new Array(); var arrTbox = new Array(); var arrLookup = new Array(); var i; for (i = 0; i < tbox.options.length; i++) { arrLookup[tbox.options[i].text] = tbox.options[i].value; arrTbox[i] = tbox.options[i].text; } var fLength = 0; var tLength = arrTbox.length; for(i = 0; i < fbox.options.length; i++) { arrLookup[fbox.options[i].text] = fbox.options[i].value; if (fbox.options[i].selected && fbox.options[i].value != "") { arrTbox[tLength] = fbox.options[i].text; tLength++; } else { arrFbox[fLength] = fbox.options[i].text; fLength++; } } arrFbox.sort(); arrTbox.sort(); fbox.length = 0; tbox.length = 0; var c; for(c = 0; c < arrFbox.length; c++) { var no = new Option(); no.value = arrLookup[arrFbox[c]]; no.text = arrFbox[c]; fbox[c] = no; } for(c = 0; c < arrTbox.length; c++) { var no = new Option(); no.value = arrLookup[arrTbox[c]]; no.text = arrTbox[c]; tbox[c] = no; } } // End --> </script> EOF print $query->start_html(-title=>'la...', -BGCOLOR=>'#9FBBC5'); print $query->Dump; print $query->startform; print $query->scrolling_list(-name=>'list1', -values=>\%btsntoln, -size=>10, -multiple=>'true'); print <<EOF ; <td align="center" valign="middle"> <input type="button" onClick="move(this.form.list2,this.form.list1)" v +alue="<<"> <input type="button" onClick="move(this.form.list1,this.form.list2)" v +alue=">>"> EOF print $query->scrolling_list(-name=>'list2', -size=>10, -multiple=>'true'); print $query->submit('action','Update'); print "</FONT>",$query->endform; print $query->end_html;

If you know of any way to do what I am trying to do please give me some pointers.

Thanks!
Waswas

In reply to Multiple item selects and CGI.pm headaches! by waswas-fng

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.