2016-08-09 4 views
1

SHtml.ajaxSubmit Am с помощью Scala с лифтом. Я пытаюсь создать SHtml.ajaxSubmit(), используя привязку CSS, и я хочу, чтобы она была включена или отключена на основе внешнего свойства. До сих пор мне удалось отобразить submit и выполнить всю другую проводку, но я не могу ни вызвать JS-метод при создании ajaxSubmit(), ни делать это другим способом.Как изменить состояние ajaxSubmit в Lift на загрузке страницы

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

Наконец у меня есть переменная, которая говорит мне, следует ли это быть включен или нет, но я до сих пор не может управлять для изменения состояния кнопки после загрузки страницы на подъемнике.

Вот 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> 

Btw Я проверил и события, кажется, не работает для меня?!?!

+0

Можете ли вы обновить HTML-форму? – Brett

+0

@Brett Я добавил код HTML для формы. Это может выглядеть немного странно с именами и т. Д., Но это связано с тем, что я немного запутал его. – Boyan

+1

Как выглядит сгенерированный HTML? Использование самозакрывающихся тегов ('' вместо '') для тегов, которые не определены как самозакрывающиеся в HTML5, вызовет проблемы с лифтом синтаксический анализатор. См. Https://groups.google.com/forum/#!topic/liftweb/5_32sWfFbRs. – Brett

ответ

1

Мне удалось изменить состояние кнопки с помощью JS. Я не мог найти способ исправить это в Лифте, и именно поэтому я использовал 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" + 
    "   });" 
} 

Я надеюсь, что это поможет вам, если вы попали в проблему, как у меня, и не имеют никакого другого решения.

 Смежные вопросы

  • Нет связанных вопросов^_^