This is one of those prototype "things"... selectID one would expect to be the elements ID and not its name! LOL
Good catch on the html... I'll fix that in the ajax forms generator. got it working in firefox, I'll have it fixed in ie before too much longer... Walter & TJ, thanks for all your help! On Mon, Apr 18, 2011 at 11:20 AM, T.J. Crowder <[email protected]>wrote: > Hi, > > Your code is looking for an element with `name` equal to "ajowner", > but the `name` on your radio buttons is "owner", not "ajowner". > > Also, note that your HTML is invalid. You have two elements with the > `id` (not `name`) "ajowner". `id` values MUST be unique on the page[1] > > [1] http://www.w3.org/TR/html5/elements.html#the-id-attribute > > HTH, > > -- T.J. :-) > > On Apr 18, 3:43 pm, Phil Petree <[email protected]> wrote: > > TJ You're right... it's showing the element as undefined but I'm not sure > > why.. > > > > HTML: > > <label id='labowner' for='ajowner'>owner</label> > > <input type='radio' name='owner' id='ajowner' value='true'/> True > > <input type='radio' name='owner' id='ajowner' value='false'/> False > > RESULTS from your code: > > > > if(bOwner) > > selectThis = {selectID: 'ajowner', selectValue: 'true' }; // this is > > what gets set as bOwner is '1' > > else > > selectThis = {selectID: 'ajowner', selectValue: 'false' }; > > var selector = radioTemplate.evaluate(selectThis); > > // selectThis = object {selectID="ajowner", selectValue="true"} > > > > var selector = radioTemplate.evaluate(selectThis); > > // "input[type=radio][name=ajowner][value=true]" > > > > var list = $$(selector); > > // list = [] > > > > var element = list[0]; > > // undefined - throws here! > > > > These work: > > $('ajowner').writeAttribute("checked", "checked"); // sets the 'true' > > button > > > $$("input[type=radio][name='owner'][value='false']")[0].writeAttribute("che > cked", > > "checked"); // will set either button > > > > On Mon, Apr 18, 2011 at 3:03 AM, T.J. Crowder <[email protected] > >wrote: > > > > > > > > > > > > > > > > > Hi, > > > > > > $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > > "checked"); // blows up! > > > > > The first step is to find out *what part* is blowing up. Break the > > > statement up into its component parts: > > > > > var selector = radioTemplate.evaluate(selectThis); > > > var list = $$(selector); > > > var element = list[0]; > > > element.writeAttribute("checked", "checked"); > > > > > ...and walk through with a debugger[1] and see what things look like > > > at each stage. According to your quoted code, the value of `selector` > > > once you've done the `evaluate` _will_ be "input[type=radio] > > > [name=owner][value=1]" (see this: [2]). I'm fairly sure templates have > > > nothing to do with what's going wrong. (My money is on that selector > > > not matching anything, hence indexing into it giving you `undefined`, > > > which you're then trying to call a function on. So the question is: > > > Why isn't it matching anything.) > > > > > [1]http://blog.niftysnippets.org/2011/03/no-excuse.html > > > [2]http://jsbin.com/owaqa3 > > > > > FWIW, > > > -- > > > T.J. Crowder > > > Independent Software Engineer > > > tj / crowder software / com > > > www / crowder software / com > > > > > On Apr 18, 1:30 am, Phil Petree <[email protected]> wrote: > > > > var bOwner = 1; > > > > var radioTemplate = new > > > > > Template('input[type=radio][name=#{selectID}][value=#{selectValue}]'); > > > > $('ajRecord').value = 1; > > > > $('ajacct_id').value = 1; > > > > $('ajhoa_id').value = 1; > > > > selectThis = {selectID: 'owner', selectValue: bOwner }; > > > > $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > > "checked"); // blows up! > > > > > > // this works but we prefer to use the template for brevity/bandwidth > > > sake > > > > if(bOwner > 0 ) > > > > { > > > > $('ajowner').writeAttribute("checked", "checked");} > > > > > > else > > > > > > $$("input[type=radio][name='owner'][value='false']")[0].writeAttribute("che > > > cked", > > > > "checked"); > > > > > > On Sun, Apr 17, 2011 at 6:45 PM, Walter Lee Davis < > [email protected] > > > >wrote: > > > > > > > Sure, this is something I have struggled with as well. The return > from > > > a > > > > > Template.evaluate call is not the generated object, but some other > form > > > of > > > > > return (probably a boolean success or something like that -- not > > > exactly > > > > > sure). > > > > > > > If you need to get access to the object immediately after creating > it, > > > you > > > > > may want to use the new Element() syntax instead of Template, > because > > > this: > > > > > > > var foo = new Element('div',{id:'bar'}); > > > > > > > will return a handle to the element, even before you add it to the > > > page, > > > > > while Template.evaluate may need you to pause a beat before > $('bar') > > > will > > > > > access the element from your page after you've inserted it. > > > > > > > Walter > > > > > > > On Apr 17, 2011, at 2:52 PM, Phil Petree wrote: > > > > > > > Using Prototype version 1.6.1 (I know everyone is up to 1.7 but > we > > > can't > > > > >> upgrade at this time) > > > > >> Code looks like this: > > > > > > >> var selectThis; > > > > >> var radioTemplate = new > > > > >> > Template('input[type=radio][name=#{selectID}][value=#{selectValue}]'); > > > > >> var bValue = 1; // this is actually set from the rc of a function > and > > > is > > > > >> absolutely 1 but it shouldn't matter > > > > > > >> selectThis = {selectID: 'owner', selectValue: bValue }; > > > > >> > $$(radioTemplate.evaluate(selectThis))[0].writeAttribute("checked", > > > > >> "checked"); > > > > >> the last line causes a throw and all processing stops. any ideas? > > > > > > >> Thanks, > > > > > > >> Phil > > > > > > >> -- > > > > >> You received this message because you are subscribed to the Google > > > Groups > > > > >> "Prototype & script.aculo.us" group. > > > > >> To post to this group, send email to > > > > >> [email protected]. > > > > >> To unsubscribe from this group, send email to > > > > >> [email protected]. > > > > >> For more options, visit this group at > > > > >>http://groups.google.com/group/prototype-scriptaculous?hl=en. > > > > > > > -- > > > > > You received this message because you are subscribed to the Google > > > Groups > > > > > "Prototype & script.aculo.us" group. > > > > > To post to this group, send email to > > > > > [email protected]. > > > > > To unsubscribe from this group, send email to > > > > > [email protected]. > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/prototype-scriptaculous?hl=en. > > > > > -- > > > You received this message because you are subscribed to the Google > Groups > > > "Prototype & script.aculo.us" group. > > > To post to this group, send email to > > > [email protected]. > > > To unsubscribe from this group, send email to > > > [email protected]. > > > For more options, visit this group at > > >http://groups.google.com/group/prototype-scriptaculous?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "Prototype & script.aculo.us" group. > To post to this group, send email to > [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/prototype-scriptaculous?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en.
