/ / Comment changer l'état d'un ajaxSubmit dans Lift au chargement de la page - javascript, jquery, scala, lift

Comment changer l'état d'un ajaxSubmit dans Lift au chargement de la page - javascript, jquery, scala, lift

SHtml.ajaxSubmit J'utilise Scala avec Lift. J'essaie de créer un SHtml.ajaxSubmit () en utilisant la liaison CSS, et je le veux activé ou désactivé en fonction d'une propriété externe. Jusqu'à présent, j'ai réussi à afficher le fichier submit et à effectuer tous les autres câblages, mais je ne suis pas en mesure d'invoquer une méthode JS lors de la création de ajaxSubmit () ni de le faire autrement.

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


J'ai également 2 classes de cas pour activer ou désactiver l'état du bouton:

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");"
}

Enfin, j’ai une variable qui me dit si cela doit être activé ou non, mais je ne parviens toujours pas à changer l’état du bouton après le chargement de la page à la manière de l’ascenseur.

Voici le formulaire HTML où se trouve le bouton que je veux désactiver:

    <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>

Btw j'ai testé et les événements ne semblent pas fonctionner pour moi?!?!

Réponses:

1 pour la réponse № 1

J’ai réussi à changer l’état du bouton en utilisant JS. Je ne trouvais pas le moyen de résoudre ce problème dans Lift uniquement et c’est pourquoi j’ai utilisé Lift en combinaison avec JS.
J'ai créé une fonction JS personnalisée qui effectue latravail et je l'ai appelé au chargement de la page. Puisque je voulais que toute la logique métier derrière la page soit dans le source Scala, j'ai enregistré la commande this avec S.appendJs () lors de la création du formulaire. En bref, voici le code:

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


Voici l'implémentation de 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" +
"            });"
}

J'espère que cela vous aidera si vous rencontrez un problème comme le mien et que vous n'avez pas d'autre solution.