So it works now? Glad to hear. Let us know if you need anything else. - T.J.
On Dec 11, 10:44 am, youradds <andy.ne...@gmail.com> wrote: > haha think I may have worked it out :p > > Was missing this in the last one: > > jQuery("#catid3").html(options); > jQuery('#catid3 option:first').attr('selected', > 'selected'); > > On Dec 11, 4:37 pm, youradds <andy.ne...@gmail.com> wrote: > > > > > Hi, > > > Ok, well kinda managed to get it working - however, I'm thinking a > > different approach may be needed. Let me explain a bit behind this. > > > Basically, there are 4 SELECT boxes (catid1, catid2, catid3, catid4) . > > > When someone selects a value from catid1, it then passes that ID to a > > script - and then a list of values for that category are passed back > > (its subcategories) ... then the same for catid3 > > > Now, this all works absolutly fine - that is until I send them back to > > the page (i.e for an error, such as no title being entered or > > something) ... What I'm trying to do, is make some code that will > > automatically immitate the selecting of the boxes. > > > The AJAX code I'm using is: > > > jQuery.noConflict(); > > > jQuery(function(){ > > jQuery("select#catid1").change(function(){ > > jQuery.getJSON("/cgi-bin/ajax_cats.cgi",{id: > > jQuery(this).val()}, > > function(j){ > > > jQuery('#catid2').hide(); > > jQuery('#catid3').hide(); > > jQuery('#catid4').hide(); > > > var options = ''; > > for (var i = 0; i <j.length; i++) { > > options += '<option value="' + > > j[i].optionValue + '">' + j > > [i].optionDisplay + '</option>'; > > } > > jQuery("#catid2").html(options); > > jQuery('#catid2 option:first').attr('selected', > > 'selected'); > > > if (j.length > 1) { > > jQuery('#catid2').show(); > > > > jQuery('#next_step_button').hide(); > > } > > }) > > }) > > }) > > > This works fine - but when I do: > > > jQuery("#catid4").val("<%catid4%>"); > > > ..it doesn't actually process it in quite the same way (the box isn't > > loaded) > > > Cany anyone suggest a way of doing this? > > > I've tried this (its part template parser synatax, and the rest is JS/ > > AJAX) > > > <%if catid1%> > > jQuery("#catid1").val("<%catid1%>"); > > jQuery.getJSON("/cgi-bin/ajax_cats.cgi",{id: <%catid1%> }, > > function > > (j){ > > > jQuery('#catid2').hide(); > > jQuery('#catid3').hide(); > > jQuery('#catid4').hide(); > > > var options = ''; > > for (var i = 0; i <j.length; i++) { > > options += '<option value="' + > > j[i].optionValue + '">' + j > > [i].optionDisplay + '</option>'; > > } > > jQuery("#catid2").html(options); > > jQuery('#catid2 option:first').attr('selected', > > 'selected'); > > > if (j.length > 1) { > > jQuery('#catid2').show(); > > > > jQuery('#next_step_button').hide(); > > } > > <%if > > catid2%>jQuery("#catid2").val("<%catid2%>");<%endif%> > > }); > > > <%endif%> > > > <%if catid2%> > > jQuery.getJSON("/cgi-bin/ajax_cats.cgi",{id: <%catid2%> }, > > function > > (j){ > > jQuery('#catid3').hide(); > > jQuery('#catid4').hide(); > > > var options = ''; > > for (var i = 0; i <j.length; i++) { > > options += '<option value="' + > > j[i].optionValue + '">' + j > > [i].optionDisplay + '</option>'; > > } > > jQuery("#catid3").html(options); > > jQuery('#catid3 option:first').attr('selected', > > 'selected'); > > > if (j.length > 1) { > > jQuery('#catid3').show(); > > > > jQuery('#next_step_button').hide(); > > } else { > > > > jQuery('#next_step_button').show(); > > } > > <%if > > catid3%>jQuery("#catid3").val("<%catid3%>");<%endif%> > > }); > > > <%endif%> > > > <%if catid3%> > > jQuery.getJSON("/cgi-bin/ajax_cats.cgi",{id: <%catid3%> }, > > function > > (j){ > > var options = ''; > > > for (var i = 0; i <j.length; i++) { > > options += '<option value="' + > > j[i].optionValue + '">' + j > > [i].optionDisplay + '</option>'; > > } > > if (j.length > 1) { > > jQuery('#catid4').show(); > > alert("values exist, so > > show button 45"); > > > > jQuery('#next_step_button').hide(); > > } else { > > > > jQuery('#next_step_button').show(); > > } > > <%if > > catid4%>jQuery("#catid4").val("<%catid4%>");<%endif%> > > > }); > > > <%endif%> > > > <%if catid4%> > > jQuery.getJSON("/cgi-bin/ajax_cats.cgi",{id: <%catid4%> }, > > function > > (j){ > > > var options = ''; > > for (var i = 0; i <j.length; i++) { > > options += '<option value="' + > > j[i].optionValue + '">' + j > > [i].optionDisplay + '</option>'; > > } > > if (j.length > 1) { > > > > jQuery('#next_step_button').hide(); > > } else { > > > > jQuery('#next_step_button').show(); > > } > > }); > > <%endif%> > > > It works up to the 4th box, and then shows the box - but refuses to > > load the values :/ > > > Any suggestions? > > > TIA > > > Andy > > > On Dec 11, 4:27 pm, Scott Sauyet <scott.sau...@gmail.com> wrote: > > > > And your other syntax should also work as well: > > > > http://jsbin.com/oredo(codehttp://jsbin.com/oredo/edit) > > > > Must be something else on the page... > > > > -- Scott