将数据绑定到按钮中的范围使用jquery单击提升框架中的ajax

时间:2013-04-23 09:40:28

标签: jquery scala lift

我正在尝试创建一个简单的电梯网络应用程序。我想通过片段JsCmds返回函数在我的视图中显示<span>中的一些数据。到目前为止我尝试了以下代码。

在我的视图中

 <div id="ticketDiv" style="display:none;border:2px solid #FF00FF">
    <p>This is a sample div which show and hide while ajax calling</p><br />
    Ticket Number: <span id="ticketNumber"></span>
    <input id="testId" value="test"/>
 </div>

在代码段

  class ShowBookedTicket {

    def showBookedTicket(s: String): JsCmd = {      

        JsCmds.JsHideId("PGMainDiv")&
        JsCmds.JsShowId("ticketDiv")&
        JsCmds.SetValueAndFocus("testId","12345")
        //JsCmds.SetValById("ticketNumber", "1234")
        //JsCmds.SetHtml("1234","<span></span>")
         //"#ticketNumber" #> "12345" 
        //"#ticketNumber *" #> "12345"
        //JsCmds.Function("testJsFunction",List("param"),SHtml.ajaxCall( () => JsRaw("""$('#ticketDiv').show()""")).cmd)._2
         }

  def render = "*" #> {
    "#PGOK [onClick]" #> SHtml.onEvent(showBookedTicket)
  }
}

我也尝试了所有注释行。但我没有得到任何正确的结果。在JsCmds.SetValueAndFocus("testId","12345")JsCmds.SetValById("ticketNumber", "1234"),如果我给出文本框ID,那么它正在工作。我该如何修复跨度中的数据。任何人都可以给出一个答案。

Thanxx .. !!!

1 个答案:

答案 0 :(得分:1)

我不完全确定您遇到的确切问题,并且正在做一些假设,因为您只有一部分HTML被调用 - 例如,什么是PGMainDiv?如何调用代码段,#PGOK等等。

但是,我认为它看起来像:

  <div data-lift="ShowBookedTicket">
    <div id="ticketDiv" style="display:none;border:2px solid #FF00FF">
        <p>This is a sample div which show and hide while ajax calling</p><br />
        Ticket Number: <span id="ticketNumber"></span>
        <input id="testId" value="test"/>
    </div>
    <input type="button" id="PGOK" />
  </div>

如果是这种情况那么你所拥有的似乎是有效的。因此,我认为注释代码存在问题。对于那些,代码中有一些项目:

JsCmds.SetHtml将要替换的元素的id和NodeSeq作为参数。您评论过的版本都没有。如果您将其更改为:

,它应该可以工作
 JsCmds.SetHtml("ticketNumber", <span>1234</span>) //No quotes around the XML

"#ticketNumber" #> "12345"无法在您的方法中使用,因为它是CssSelector,需要应用于NodeSeq。这只会发生在render内或者您手动调用apply

此外,如果更容易,您还可以通过JsCmds.Run发出任意Javascript。因此,您也可以直接使用jquery函数,例如:

JsCmds.Run("$('#ticketNumber').html('1234')");