java - Apache Wicket : Onclick of a form button, 我需要调用一个小的 javascript 函数

标签 java javascript wicket

单击表单按钮时,我需要调用一个小的 javascript 函数。此 javascript 函数应验证相同表单中的某些字段,然后调用 java 中表单的 onSubmit()。

主要思想是让验证发生在客户端而不是在 java 中。

完整的想法:

我有如下所示的 help.html 文件:

<form wicket:id="form">
      <input type="text" wicket:id="one"/>
      <input type="text" wicket:id="two"/>
      <input type="submit" wicket:id="save"/>
</form>

在 help.java 中,我创建了一个 WebMarkupContainer 并添加了这个带有提交按钮的表单:

    container.add(new Button("save") {
        @Override
        public void onSubmit() {
             //saved
        }
    });

在 html 中单击按钮时,它会调用 onSubmit(),在这里我们可以对文本框值进行验证。 但我需要在 HTML 页面本身中进行所有验证。

单击保存按钮时,它应该调用一个 javascript 函数,如下所示:

    <form wicket:id="form">
          <input type="text" wicket:id="one"/>
          <input type="text" wicket:id="two"/>
          <input type="submit" wicket:id="save" onclick="validateRange()"/>
    </form>

JavaScript:

    function validateRange(){
          //logic
          //Submit the form
    }

这可以做到吗?

最佳答案

您需要一个 AjaxSubmitLink 或类似的东西。您需要创建一个新的 IAjaxCallListener

public class MyAjaxCallListener implements IAjaxCallListener{

@Override
public CharSequence getBeforeHandler(Component component) {
    return YOUR_JAVA_SCRIPT;
}

@Override
public CharSequence getBeforeSendHandler(Component component) {
    return YOUR_JAVA_SCRIPT;
}

// ...     not needed overrides can return null

}

然后在您的 AjaxSubmitLink 中您可以添加这个 AjaxCallListener

   @Override
   protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
      super.updateAjaxAttributes(attributes);
      attributes.getAjaxCallListeners().add(new MyAjaxCallListener());
   }

关于java - Apache Wicket : Onclick of a form button, 我需要调用一个小的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363612/

相关文章:

javascript - 使用 PDF-LIB 合并 PDF

javascript - 如何获得区域值(value)?

java - Apache Wicket 口 : How to add PropertyModel to checkbox object

java - Wicket 面板(对话框)无法正常工作?

java - 在 Android 应用程序中解码二维码?

java - Spring Roo 的前提条件是什么

java - Typesafe forName 类加载

java - Java XMLRPC 中的 Python 元组

javascript - 我在 jPushMenu 中添加了 "input",但如果我在输入中添加 "click",菜单将关闭。我可以阻止这种行为吗?

java - 如何隐藏在 Wicket 中检查 AjaxCheckBox 的 WebMarkUpContainer