I am probably confused on what exactly is going on in the request /
response cycle here, but I am trying to show a table cell after a
calculation is performed, and I can't seem to get the js to run.  The
JS is being called in the showResults method that is bound to the
submit action.  I am guessing that the submit action is reloading the
page, so there is no opportunity to run the js.  Any suggestions on
how I should be doing this instead?  I am learning lift, and I am
working on an app that needs to be completely stateless (no db
backend, no cookies, no session).

I have the following for my page:

<lift:surround with="default" at="content">
  <table>
    <tbody>
      <tr>
        <td>
                <lift:mortality.calcForm form="POST" id="mortalityForm">
                                    Age: <f:age><input 
type="text"/></f:age><br/>
                                    Male: <f:male><input 
type="text"/></f:male><br/>
                                    <f:submit><input type="submit" 
value="calculate"/></f:submit>
                            </lift:mortality.calcForm>
        </td>
        <td id="mortalityResult" style="display:none;" >
          <lift:mortality.doCalculate>
          Life Expectancy: <r:le>50</r:le>
          </lift:mortality.doCalculate>
        </td>
      </tr>
    </tbody>
  </table>
</lift:surround>


Then in my snippet code I have the following:
class Mortality {
  object ageVar extends RequestVar[Int](S.param("age").map(_.toInt)
openOr 0)
  object maleVar extends RequestVar[Boolean]
(S.param("male").map(_.toBoolean) openOr false)
  var le = "0"
  def calculateLifeExp = {
    val calcLE = Annuity2000.lifeExpectancy(ageVar.is, maleVar.is)
    le = String.format("%.2f",double2Double(calcLE))
  }
  def doCalculate(xhtml:NodeSeq):NodeSeq = {
    calculateLifeExp
    Helpers.bind("r", xhtml,
      "le" -> le.toString
    )
  }
  def showResults():JsCmd = {
    JsCmds.Run("$('#mortalityResult').show();alert('I ran')")
  }
  def calcForm(xhtml:NodeSeq):NodeSeq = {
    Helpers.bind("f", xhtml,
      "age" -> SHtml.text(ageVar.is.toString, v => ageVar(v.toInt)),
      "male" -> SHtml.text(maleVar.is.toString, v =>
maleVar(v.toBoolean)),
      "submit" -> SHtml.submit("Calculate", showResults),
      "le" -> le.toString
    )
  }
}

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@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