Hi MorningZ, see my reply at the other thread. I am sorry for double posting. I think I kinda got stressed ;-)
Henjo On Dec 15, 12:16 am, MorningZ <morni...@gmail.com> wrote: > Since you have two topics going on the same exact topic, i'll repeat > what i suggested in topic # 2: > > Stop using the minified version for debugging purposes.... if your > code doesn't work, you should be using the "full" version of jQuery, > as the minified version adds a LOT of complexity when trying to figure > out what (bad) is going on > > On Dec 14, 6:03 pm, Henjo <henjohoek...@gmail.com> wrote: > > > > > Hi Scott, > > > thanks very much for your elaborate writing. This should give me > > enough to work on it and get it done. > > I am rather new to jQuery and ajax altogether - so that my code > > wouldn't get a 10 I understand ;-) > > > Thanks for your evaluation on this. > > > I did install Fiddler & Firebug Lite and got some info from that - but > > by far not enough to understand what goes wrong. > > > I will rework on this and at least post back when it works. > > > Thanks again. > > > Henjo > > > On Dec 14, 11:41 pm, Scott Sauyet <scott.sau...@gmail.com> wrote: > > > > On Dec 14, 4:33 pm, Henjo <henjohoek...@gmail.com> wrote: > > > > > Here's the link to the website, it is the product wizard > > > > form:http://bit.ly/7v8pHu > > > > Okay, if you haven't used Fiddler [1], it's pretty useful for testing > > > HTTP request on IE, something like LiveHTTPHeaders for Firefox, and > > > more general. > > > > The first thing I found is that IE isn't even submitting the second > > > request. It's a little hard to try to build my own version of this to > > > determine why, but you might want to either use Firebug Lite [2] as > > > someone suggested in another thread or simply add some alerts to see > > > how far it gets. You should be able to quickly nail down whether it > > > gets to the jQuery ajax call at all. If it does, you probably can > > > supply more information for this list. If not, hopefully the line it > > > stops on can supply you with help. > > > > But I'm going to suggest that you rethink the code design altogether. > > > Rather than returning the whole set of select elements as HTML, I > > > would suggest that you return some JSON, either the data for all three > > > select boxes or the data for each successive one. > > > > Then I think you could write a function named, say, "linkedDropdowns", > > > which you would use like this: > > > > linkedDropdowns("option1", "option2", function() { > > > return {option1: $("#option1 select").val()}; > > > }); > > > linkedDropdowns("option2", "option3", function() { > > > return {option2: $("#option2 select").val()}; > > > }); > > > > This function would bind the change event on the element named by the > > > first argument to a function that merged the results of calling the > > > third argument with your common data ({L: TYP03_LANG}) and then > > > perform an ajax call using that merged data. The success function of > > > that ajax call would update the element named by the second argument > > > using the JSON data supplied, and perform the scrolling or hiding > > > necessary for your UI. It would probably delegate the updating to > > > another function which you could also use to populate the initial > > > list. > > > > This would make it easier to add additional steps as needed, or to > > > return something additional in the JSON that says there are no > > > additional steps. The deeply nested code you've got is likely to be > > > difficult to maintain. > > > > I don't have time to try to code something like this myself now, but > > > the main code might look something like this: > > > > var defaults = {L: TYP03_LANG}; > > > > function updateSelect(select, data) { > > > // loop through the results in data creating the inner HTML > > > for the select box > > > $("#" + select).html(myHTML); > > > // hide all the select boxes (perhaps with visibility and size > > > rather than "hide"), then reset the current one to visible > > > } > > > > function linkedDropdown(select1, select2, fn) { > > > $("#" + select1).change(function() { > > > $.get("index.php?eID=tx_knowledgebase_pi1", $.extend > > > (defaults,fn()), function(data, textStatus) { > > > // if good text status > > > updateSelect(select2, data); > > > }, "json") > > > }); > > > } > > > > $.get("index.php?eID=tx_knowledgebase_pi1", defaults, function > > > (data, textStatus) { > > > updateSelect("option1", data); > > > }); > > > > linkedDropdowns("option1", "option2", function() { > > > return {option1: $("#option1 select").val()}; > > > }); > > > linkedDropdowns("option2", "option3", function() { > > > return {option2: $("#option2 select").val()}; > > > }); > > > > Of course this is probably full of typos, and maybe it wouldn't work > > > at all for your case, but I think it would be easier to write > > > something reusable like this and then use if a few times in your code > > > than to do this deeply nested, and very fragile-looking code. > > > > Good luck, > > > > -- Scott > > > > [1]http://www.fiddler2.com/fiddler2/ > > > [2]http://getfirebug.com/lite.html