如何在页面加载时更改Lift中ajaxSubmit的状态

时间:2016-08-09 18:11:35

标签: javascript jquery scala lift

SHtml.ajaxSubmit 我使用Scala with Lift。我正在尝试使用CSS绑定创建一个SHtml.ajaxSubmit(),我希望它基于外部属性启用或禁用。到目前为止,我设法显示提交并执行所有其他连接,但我既不能在创建ajaxSubmit()时调用JS方法,也不能以任何其他方式执行此操作。

"#myCheckbox" #> SHtml.ajaxCheckbox(btns.isChecked, btnState => checkboxClicked(btnState), "id" -> "myCheckbox") &
"#myBtn *" #> SHtml.ajaxSubmit("click me", btnClicked) 


我还有2个案例类来启用或禁用按钮状态:

case class Disable(id: String) extends JsCmd {
  def toJsCmd = "$('#"+id+"').children().prop('disabled', 'true');"
}

case class Enable(id: String) extends JsCmd {
  def toJsCmd = "$('#"+id+"').children().removeProp('disabled');"
}

最后我有一个变量告诉我是否应该启用它,但是在以Lift的方式加载页面后我仍然无法更改按钮的状态。

这是HTML表单,其中是我要禁用的按钮:

    <lift:surround with="default" at="content" xmlns:item="http://java.sun.com/xml/ns/javaee">
        <div class='pageTitle'>Some title</div>
        <p>
            some text
        </p>
        <form data-lift="form.ajax">
            <div class="lift:MyScalaCodeBehind.btns">
                <table>
                    <tr>
                        <td>
                            <!-- checkbox -->
                            <div id="myCheckbox"/>
                            <label for="myCheckbox">some text</label>
                        </td>
                    </tr>
                    <tr>
                        <!-- button -->
                        <td id="myBtn"/>
                    </tr>
                </table>
            </div>
        </form>
</lift:surround>

顺便说一下,我测试了这些事件似乎对我不起作用了吗?!?!

1 个答案:

答案 0 :(得分:1)

我设法使用JS改变了按钮的状态。我无法找到一种如何在Lift中解决这个问题的方法,这也就是我将Lift与JS结合使用的原因。 我创建了一个自定义JS函数来完成工作,我在页面加载时调用它。由于我希望页面后面的所有业务逻辑都在Scala源代码中,因此在创建表单时我使用S.appendJs()注册了此命令。简而言之,这里是代码:

S.appendJs(CustomOnLoadCmd()) // this is done when the form is initialized

这是CustomOnLoadCmd的实现:

case class CustomOnLoadCmd() extends JsCmd {
  def toJsCmd = "$(document).ready(function() {\n" +
    "                if ($('#myCheckbox').prop('checked')) {\n" +
    "                    $('#myBtn').children().prop('disabled', 'true');\n" +
    "                } else {\n" +
    "                    $('#myBtn').children().removeProp('disabled');\n" +
    "                }\n" +
    "            });"
}

我希望如果您遇到像我这样的问题并且没有任何其他解决方案,这会对您有所帮助。