RE: setting xforms control value with javascript

In my opinion, the best way to do this would be to do this is declaratively with 
 <input mediatype="text/html" ref="data" />
Please lobby your vendor to support it and add it to the list.  Recently both Orbeon and Chiba added such support, and it's clearly within the realm of possibility for Mozilla as well.
 
Leigh.

________________________________

From: www-forms-request@w3.org [mailto:www-forms-request@w3.org] On Behalf Of Dustin Whitney
Sent: Wednesday, January 17, 2007 2:17 PM
To: mark.birbeck@x-port.net
Cc: Iņaki Salinas Bueno; www-forms
Subject: Re: setting xforms control value with javascript


Mark,

    What I was trying to accomplish when doing this was to take the xhtml generated by FCKeditor and put it into my model.  I have not really seen  a nice way of editing mixed content with XForms.  I have posted to this list on a couple of occasions asking anyone for a way to bind a regular <xhtml:textarea> to part of an instance document, or, even better, bind the FCKeditor to <xforms:textarea>, but I haven't gotten much response, and documentation on XForms is a bit sparse.  Have you got any suggestions besides using javascript?  And is there a more active XForms mailing list anyone knows of? 

-Dustin 


On 1/17/07, Mark Birbeck <mark.birbeck@x-port.net> wrote: 

	Iņaki,
	
	It's still a big hack though! :)
	
	In XForms, the load action has absolutely nothing to do with the
	executing of JavaScript functions, and I really hope that this
	technique doesn't catch on. XForms takes great pains to build nicely 
	on top of XPath, and the way to achieve what you want is to create an
	extension function, and then just write this:
	
	  <xf:setvalue bind="docPKCS7" value="crypto:signText(somenode)" /> 
	
	That way you let the XForms model take care of everything, and you
	only need to worry about writing your extension function.
	
	Obviously, the specifics of adding extension functions will depend on
	which XForms processor you are using, but I'm pretty sure that most 
	can do it now.
	
	Regards,
	
	Mark
	
	On 17/01/07, Iņaki Salinas Bueno <inksalinas@gmail.com> wrote:
	> Thanks Dustin!!
	>
	> Finally it works! I had nonsense problems with the namespaces, but I have 
	> seen that it is not necessary to introduce them in the Javascript
	> getElementsByTagName function.
	>
	> Greetings
	> Iņaki
	>
	>
	> 2007/1/16, Dustin Whitney < dustin.whitney@gmail.com>:
	> >
	> > Heh, I was working on the same thing yesterday.  Here is a simple version
	> of what I accomplished, and probably what you are looking for.
	> >
	> > <html
	> >     xmlns="http://www.w3.org/1999/xhtml "
	> >     xmlns:xforms=" http://www.w3.org/2002/xforms "
	> >     xmlns:event="http://www.w3.org/2001/xml-events">
	> >     <head>
	> >         <script language="javascript"> 
	> >         <![CDATA[
	> >             function changeMe(){
	> >                 var model = document.getElementById("myModel");
	> >                  var instance = model.getInstanceDocument ("myInstance");
	> >                  var textElements = instance.getElementsByTagName("text");
	> >                  textElements[0].firstChild.nodeValue =
	> 'Changed!';
	> >                 model.rebuild();
	> >                 model.refresh();
	> >             }
	> >         ]]>
	> >         </script>
	> >         <xforms:model id="myModel"> 
	> >             <xforms:instance id="myInstance">
	> >                 <text xmlns="">Change Me!</text>
	> >             </xforms:instance>
	> >             <xforms:instance id="script"> 
	> >                 <script url="javascript:changeMe()"/>
	> >             </xforms:instance>
	> >         </xforms:model>
	> >     </head>
	> >     <body> 
	> >         <xforms:input ref="/text"/>
	> >         <xforms:trigger>
	> >             <xforms:label>Change!</xforms:label>
	> >             <xforms:load resource="javascript:changeMe()" 
	> event:event="DOMActivate"/>
	> >         </xforms:trigger>
	> >     </body>
	> > </html>
	> >
	> > -Dustin
	> >
	> >
	> > 
	> >
	> > On 1/16/07, Iņaki Salinas Bueno < inksalinas@gmail.com> wrote:
	> >
	> > > Hello,
	> > >
	> > > I'm trying to set the value of an xforms control using JavaScript: I 
	> must use a JavaScript function, and set the result in the form.
	> > >
	> > > I call the Javascript function following a tip of Nicholase Chase from
	> IBM (using 'load'), and it works. 
	> > >
	> > > I want to use this function:
	> > >
	> > >       document.getElementById('docPKCS7').value = crypto.signText
	> (document.getElementById('formulari').innerHTML, "auto"); 
	> > >
	> > > 'docPKCS7' must point to xforms control. The right part of the equality
	> works, but the allocation of the value obtained to the object pointed by
	> 'docPKCS7' not. 
	> > >
	> > > This is the code of the xforms control:
	> > > <xforms:textarea bind="docPKCS7">
	> > >
	> > > I tried this too:
	> > > <xforms:textarea 
	> ref="instance('auxiliars')/aux:ajudes/aux:solicitutPKCS7"
	> id="docPKCS7">
	> > >
	> > > And, following some advices from this post , I introduce the xhtml:id 
	> attribute:
	> > > <xforms:textarea
	> ref="instance('auxiliars')/aux:ajudes/aux:solicitutPKCS7"
	> xhtml:id="docPKCS7">
	> > >
	> > > But nothing works. The javascript console don't show any problem or 
	> warning, except using xhtml:id that appears the following:
	> > > Error: document.getElementById("docPKCS7") has no properties
	> > >
	> > > However, the problem is the allocation of the value in the xforms 
	> control because using a HTML textarea it works (the value returned by the
	> function appears in the textarea):
	> > > <textarea id="docPKCS7" rows="5" cols="50"/> 
	> > >
	> > > Maybe my problem is related to a namespace conflict (like this), but in
	> that case I don't know how to attack it.
	> > >
	> > > Where is the problem? What other things I can test? 
	> > > Lot of thanks
	> > >
	> > > Iņaki
	> > >
	> > >
	> > >
	> > >
	> > >
	> > >
	> > >
	> >
	> > 
	>
	>
	
	
	--
	Mark Birbeck
	CEO
	x-port.net Ltd.
	
	e: Mark.Birbeck@x-port.net
	t: +44 (0) 20 7689 9232
	w: http://www.formsPlayer.com/
	b: http://internet-apps.blogspot.com/
	
	Download our XForms processor from
	http://www.formsPlayer.com/ 
	

Received on Wednesday, 17 January 2007 22:51:34 UTC