gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 22:39:34 26 4
gpt4 key购买 nike

SHtml.ajax提交我正在使用 Scala 和 Lift。我正在尝试使用 CSS 绑定(bind)创建 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>

顺便说一句,我测试过,但这些事件似乎对我不起作用?!?!

最佳答案

我已经设法使用 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" +
" });"
}

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

关于javascript - 如何在页面加载时更改 Lift 中 ajaxSubmit 的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38857716/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com