I would simply use Shtml.ajaxText. When you press ENTER an ajax
request is sent tothe server and your function would be called with th
value you typed in.

Br's,
Marius

On May 3, 11:44 am, Meredith Gregory <lgreg.mered...@gmail.com> wrote:
> Marius,
>
> Thanks! That works much better. One final question, if i wanted to have the
> CR/LF event on the textbox have the same behavior as the button, what would
> be the simplest approach? Currently, i have
>
> { text(evalStr(), (updateWhat _)) % ("size" -> "60") % ("id" -> "whatField")
>
> }
>
> which always reverts back to the initla value of the textbox.
>
> Best wishes,
>
> --greg
>
>
>
> On Sun, May 3, 2009 at 1:08 AM, marius d. <marius.dan...@gmail.com> wrote:
>
> > First of all instead of:
>
> >  ("onclick" -> ajaxCall(JsRaw("$('#whatField').attr('value')"), s =>
> > updateWhat(s))._2)
>
> > I would use:
>
> >  ("onclick" -> ajaxCall(ValById("whatField"), s => updateWhat(s))._2)
>
> > That should work .... I think in your case you are setting the value
> > attribute of the text field to "lambda.x.x" and "$('#whatField').attr
> > ('value') is just returning the 'value' attribute of the whatField
> > node. This returns the value set statically which is different from
> > document.getElementById("whatField").value. I know it's a bit odd ...
>
> > Br's,
> > Marius
>
> > On May 3, 10:51 am, Meredith Gregory <lgreg.mered...@gmail.com> wrote:
> > > Marius,
>
> > > Thanks for the tip! That gets me a little further. However, what i really
> > > don't understand is why it is that after i have modified the textbox from
> > > "lambda x.x" to "lambda x.(x x)", then when i type
> > > $('#whatField').attr('value') in the javascript evaluation window in
> > firebug
> > > it's returning "lambda x.x". How do i access the contents of the textbox
> > > except by that call?
>
> > > Best wishes,
>
> > > --greg
>
> > > On Sun, May 3, 2009 at 12:11 AM, marius d. <marius.dan...@gmail.com>
> > wrote:
>
> > > > Greg,
>
> > > > ajaxCall returns a tuple (String, JsExp) ... so when you use it try
> > > > something like:
>
> > > >  ("onclick" -> ajaxCall(JsRaw("$('#whatField').attr('value')"), s =>
> > > > updateWhat(s))._2)
>
> > > > Br's,
> > > > Marius
>
> > > > On May 3, 9:00 am, Meredith Gregory <lgreg.mered...@gmail.com> wrote:
> > > > > Lifted,
>
> > > > > When i look at the button behavior using firebug, this is the
> > following
> > > > > error i see.
>
> > > > > F891109765602PT1 is not defined
> > > > > onclick(click clientX=950, clientY=152)1tbfBLwe...6bg%3D%3D (line 2)
> > > > > (F891109765602PT1, lift_ajaxHand...whatField").attr("value"), null,
> > > > null));
>
> > > > > It would appear that however the
>
> > > > > ajaxCall(JsRaw("$('#whatField').attr('value')")
>
> > > > > is working it is setting up a handle that is stale by the time the
> > > > behavior
> > > > > is actually invoked. This is behind-the-scenes stuff for a programmer
> > > > like
> > > > > me. It's part of what lift is s'posed to provide. Moreover, i get no
> > help
> > > > > from the compiler. The code i have written is well-typed. Any help
> > would
> > > > be
> > > > > greatly appreciated.
>
> > > > > Best wishes,
>
> > > > > --greg
>
> > > > > On Sat, May 2, 2009 at 8:50 PM, Meredith Gregory
> > > > > <lgreg.mered...@gmail.com>wrote:
>
> > > > > > Lifted,
>
> > > > > > i'm putting together a little lift-based testharness in which to
> > > > evaluate
> > > > > > various solutions to the challenge Martin posted recently regarding
> > > > scalable
> > > > > > abstractions for a little lambda interpreter. You can get a copy of
> > the
> > > > app
> > > > > > here <http://svn.biosimilarity.com/src/open/rlambda/trunk/>.
> > (Please
> > > > note:
> > > > > > this is a testharness and not a proposed solution. i've got a
> > couple of
> > > > > > solutions in mind, but before i post them, i'd like to put them in
> > a
> > > > web
> > > > > > "container".) As usual, i'm running into problems on the frontend.
> > i'm
> > > > not
> > > > > > getting expected callback behavior, and, moreover, the code i'm
> > using
> > > > used
> > > > > > to work fine.
>
> > > > > > The snippet code is included below this email's closing. The
> > relevant
> > > > > > fragment is listed just below. The behavior i see is that the
> > button
> > > > > > produces no behavior on the server at all. The CR/LF event on the
> > text
> > > > field
> > > > > > causes updateWhat to be called twice. Any advice on the frontend
> > > > behavior
> > > > > > would be greatly appreciated.
>
> > > > > > def whatNode(termStr : String) = {
> > > > > >     theTerm = termStr
> > > > > >     theClientRequestStr = evalStr()
> > > > > >     var theParseResponseStr : String =
> > > > > >       ("failure: " + theClientRequestStr + "\n");
> > > > > >     try {
> > > > > >       theParseResponseStr =
> > > > > >     theREPL.showClientRequestParseTree(theClientRequestStr)
> > > > > >       println( "parsed : " + theParseResponseStr );
> > > > > >     //theREPL.readEvalPrint(theClientRequestStr)
> > > > > >     }
> > > > > >     catch {
> > > > > >       case e => {
> > > > > >     val sw : java.io.StringWriter =    new java.io.StringWriter( );
> > > > > >     e.printStackTrace( new java.io.PrintWriter( sw, true ) );
> > > > > >     theParseResponseStr = theParseResponseStr + e.toString
> > > > > >       }
> > > > > >     }
> > > > > >     <div id="parseTree">{theParseResponseStr}</div>
> > > > > >   }
>
> > > > > >   def updateWhat(str: String): JsCmd = {
> > > > > >     println("updateWhat with " + str)
> > > > > >     JsCmds.SetHtml("parseTree", whatNode(str))
> > > > > >   }
>
> > > > > >   def show(xhtml: NodeSeq): NodeSeq = {
> > > > > >     <xml:group>
> > > > > >       <label for="whatField">Term :</label>
> > > > > >       { text("lambda x.x", (updateWhat _)) % ("size" -> "60") %
> > ("id"
> > > > ->
> > > > > > "whatField") }
> > > > > >       { <button type="button">{?("Go")}</button> %
> > > > > >        ("onclick" ->
> > ajaxCall(JsRaw("$('#whatField').attr('value')"), s
> > > > =>
> > > > > > updateWhat(s))) }
> > > > > >       <br/>
> > > > > >       <div id="parseTree">{whatNode(evalStr())}</div>
> > > > > >     </xml:group>
> > > > > >   }
>
> > > > > > Best wishes,
>
> > > > > > --greg
>
> > > > > > package com.biosimilarity.reflection.snippet
>
> > > > > > import net.liftweb._
> > > > > > import http._
> > > > > > import S._
> > > > > > import SHtml._
> > > > > > import util._
> > > > > > import Helpers._
> > > > > > import mapper._
> > > > > > import textile._
> > > > > > import js.{JE, JsCmd, JsCmds}
> > > > > > import JsCmds._
> > > > > > import JE._
>
> > > > > > import com.biosimilarity.reflection.model.REPL
>
> > > > > > import scala.xml._
>
> > > > > > class REPLForm {
> > > > > >   val theREPL = new REPL()
> > > > > >   var theTerm : String = "lambda x.x"
> > > > > >   var theClientRequestStr : String = evalStr()
>
> > > > > >   def evalStr() = theTerm
> > > > > >   def clientRequestRequest() = theClientRequestStr
>
> > > > > >   def parseTreeNode(clientRequestStr : String) = {
> > > > > >     theClientRequestStr = clientRequestStr.replace( "\n", "" );
> > > > > >     var theParseResponseStr : String =
> > > > > >       ( "failure: " + theClientRequestStr + "\n" );
> > > > > >     try {
> > > > > >       theParseResponseStr =
> > > > > >     theREPL.showClientRequestParseTree(theClientRequestStr)
> > > > > >     //theREPL.readEvalPrint(theClientRequestStr)
> > > > > >     }
> > > > > >     catch {
> > > > > >       case e => {
> > > > > >     val sw : java.io.StringWriter =    new java.io.StringWriter( );
> > > > > >     e.printStackTrace( new java.io.PrintWriter( sw, true ) );
> > > > > >     theParseResponseStr = theParseResponseStr + e.toString
> > > > > >       }
> > > > > >     }
> > > > > >     <div id="parseTree">{theParseResponseStr}</div>
> > > > > >   }
>
> > > > > >   def whatNode(termStr : String) = {
> > > > > >     theTerm = termStr
> > > > > >     theClientRequestStr = evalStr()
> > > > > >     var theParseResponseStr : String =
> > > > > >       ("failure: " + theClientRequestStr + "\n");
> > > > > >     try {
> > > > > >       theParseResponseStr =
> > > > > >     theREPL.showClientRequestParseTree(theClientRequestStr)
> > > > > >       println( "parsed : " + theParseResponseStr );
> > > > > >     //theREPL.readEvalPrint(theClientRequestStr)
> > > > > >     }
> > > > > >     catch {
> > > > > >       case e => {
> > > > > >     val sw : java.io.StringWriter =    new java.io.StringWriter( );
> > > > > >     e.printStackTrace( new java.io.PrintWriter( sw, true ) );
> > > > > >     theParseResponseStr = theParseResponseStr + e.toString
> > > > > >       }
> > > > > >     }
> > > > > >     <div id="parseTree">{theParseResponseStr}</div>
> > > > > >   }
>
> > > > > >   def updateWhat(str: String): JsCmd = {
> > > > > >     println("updateWhat with " + str)
> > > > > >     JsCmds.SetHtml("parseTree", whatNode(str))
> > > > > >   }
>
> > > > > >   def show(xhtml: NodeSeq): NodeSeq = {
> > > > > >     <xml:group>
> > > > > >       <label for="whatField">Term :</label>
> > > > > >       { text("lambda x.x", (updateWhat _)) % ("size" -> "60") %
> > ("id"
> > > > ->
> > > > > > "whatField") }
> > > > > >       { <button type="button">{?("Go")}</button> %
> > > > > >        ("onclick" ->
> > ajaxCall(JsRaw("$('#whatField').attr('value')"), s
> > > > =>
> > > > > > updateWhat(s))) }
> > > > > >       <br/>
> > > > > >       <div id="parseTree">{whatNode(evalStr())}</div>
> > > > > >     </xml:group>
> > > > > >   }
> > > > > > }
>
> > > > > > --
> > > > > > L.G. Meredith
> > > > > > Managing Partner
> > > > > > Biosimilarity LLC
> > > > > > 1219 NW 83rd St
> > > > > > Seattle, WA 98117
>
> > > > > > +1 206.650.3740
>
> > > > > >http://biosimilarity.blogspot.com
>
> > > > > --
> > > > > L.G. Meredith
> > > > > Managing Partner
> > > > > Biosimilarity LLC
> > > > > 1219 NW 83rd St
> > > > > Seattle, WA 98117
>
> > > > > +1 206.650.3740
>
> > > > >http://biosimilarity.blogspot.com
>
> > > --
> > > L.G. Meredith
> > > Managing Partner
> > > Biosimilarity LLC
> > > 1219 NW 83rd St
> > > Seattle, WA 98117
>
> > > +1 206.650.3740
>
> > >http://biosimilarity.blogspot.com
>
> --
> L.G. Meredith
> Managing Partner
> Biosimilarity LLC
> 1219 NW 83rd St
> Seattle, WA ...
>
> read more »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to