Solved

building a multi-field search form in dreamweaver

Posted on 2002-04-30
4
205 Views
Last Modified: 2012-05-04
Hi, I have a very little time to develop a new prototype and the results will have a heavy repercussion to the next stages of development on many of our next projects so I'd like to have your opinions on how to build this:

I'm building a search form in asp (javascript) with 5 dynamic lists using ultradev dreamweaver 5. A search result page will be built using the options selected in the form from that search page.

The problem is the following: each dynamic option list is supposed to update itself after any modification on another of these list is made. I suppose I'll have to put a "onChange" handler on my lists and call a javascript function that will execute the form's submit and recall that same page. Using my solution, I'll have to build 5 different record sets to dynamicly input the data in my lists. I wonder if there is a easier or more efficient way to do the job.

If my problem is not clear enough, I'll try to post more details...

Thank you in advance for your most needed advices...
0
Comment
Question by:Whistler
  • 3
4 Comments
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6982866
OK, this is unproved and un-tested, but I'm putting it in here as a working idea....


<script language="javscript">
var allOptions = [];
allOptions[0]  = new selectObj('option 1');
allOptions[1]  = new selectObj('option 2');
allOptions[2]  = new selectObj('option 3');
allOptions[3]  = new selectObj('option 4');
allOptions[4]  = new selectObj('option 5');
allOptions[5]  = new selectObj('option 6');

allOptions[0].next[0]  = new selectObj('option 1.1');
allOptions[0].next[1]  = new selectObj('option 1.2');
allOptions[0].next[2]  = new selectObj('option 1.3');
allOptions[0].next[3]  = new selectObj('option 1.4');
allOptions[0].next[4]  = new selectObj('option 1.5');
allOptions[0].next[5]  = new selectObj('option 1.6');

allOptions[1].next[0]  = new selectObj('option 2.1');
allOptions[1].next[1]  = new selectObj('option 2.2');
allOptions[1].next[2]  = new selectObj('option 2.3');
allOptions[1].next[3]  = new selectObj('option 2.4');
allOptions[1].next[4]  = new selectObj('option 2.5');
allOptions[1].next[5]  = new selectObj('option 2.6');

allOptions[0].next[0].next[0]  = new selectObj('option 1.1.1');
allOptions[0].next[0].next[1]  = new selectObj('option 1.1.2');
allOptions[0].next[0].next[2]  = new selectObj('option 1.1.3');
allOptions[0].next[0].next[3]  = new selectObj('option 1.1.4');
allOptions[0].next[0].next[4]  = new selectObj('option 1.1.5');
allOptions[0].next[0].next[5]  = new selectObj('option 1.1.6');

function selectObj(value) {
    this.value = value;
    this.next  = [];
    return this;
}
   
</script>


More to follow ////
0
 
LVL 9

Accepted Solution

by:
AlfaNoMore earned 50 total points
ID: 6982889
<select name="level_1" onChange="updateFollowingSiblings(1);">
</select>

<select name="level_2" onChange="updateFollowingSiblings(2);">
</select>

<select name="level_3" onChange="updateFollowingSiblings(3);">
</select>


<script language="javascript">
function updateFollowingSiblings(level) {
   var execThis = 'allOptions';
   for(i=0; i<level; i++) {
      var thisSelect = document.forms[0]['level_' + (i + 1)];
      execThis += '[' + thisSelect.options.selectedIndex + ']';
   }
   var thisArray = exec(execThis);
   for(i=level; i<4; i++) {
      thisSelect = document.forms[0]['level_' + i];
      // clear the next select box...
      for(j=thisSelect.length; j>0; j--) {
         thisSelect[j] = null;
      }
      // before adding the new options.
      for(k=0; k<thisArray.length; k++) {
         thisSelect[0] = new option(thisArray[k].value, k);
      }
      thisArray = // need to merge all of the next level's into one array here. Not sure how to do this, so will have to leave this here! Sorry...
   }
}
</script>
0
 

Author Comment

by:Whistler
ID: 6983389
Thanks a lot!

I have some problems tough to implant your solution since I'm just fresh out of school. I'll do my best!
0
 
LVL 9

Expert Comment

by:AlfaNoMore
ID: 6983421
I'm sure you will run into problems with this. It's quite tricky to manage multiple relationships. I htink this multi-array based approach seems quite simple, but constructing the arrays will be quite messy!

Good luck with it though.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

I have helped a lot of people on EE with their coding sources and have enjoyed near about every minute of it. Sometimes it can get a little tedious but it is always a challenge and the one thing that I always say is:  The Exchange of information …
This demonstration started out as a follow up to some recently posted questions on the subject of logging in: http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Q_28634665.html and http://www.experts-exchange.com/Programming/…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now