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

Reply via email to