You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by sv...@apache.org on 2021/02/20 18:32:52 UTC

[wicket] branch WICKET-6868-ajax-submit-onsubmit updated: WICKET-6868 ajax submit allow trigger submit on form

This is an automated email from the ASF dual-hosted git repository.

svenmeier pushed a commit to branch WICKET-6868-ajax-submit-onsubmit
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/WICKET-6868-ajax-submit-onsubmit by this push:
     new b0f164a  WICKET-6868 ajax submit allow trigger submit on form
b0f164a is described below

commit b0f164a4c70791e7b8e59918d656bfbcdfe33b2d
Author: Sven Meier <sv...@apache.org>
AuthorDate: Sat Feb 20 18:46:38 2021 +0100

    WICKET-6868 ajax submit allow trigger submit on form
---
 .../apache/wicket/ajax/form/AjaxFormSubmitBehavior.java    | 14 +++++++++-----
 .../apache/wicket/ajax/markup/html/form/AjaxButton.java    | 11 ++++++-----
 .../wicket/ajax/markup/html/form/AjaxFallbackButton.java   | 11 ++++++-----
 .../wicket/examples/ajax/builtin/FileUploadPage.java       |  4 ++--
 4 files changed, 23 insertions(+), 17 deletions(-)

diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
index 7446768..96a703b 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java
@@ -141,12 +141,12 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 	}
 
 	/**
-	 * Controls whether or not JS <code>onsubmit()</code> should be called on the submitting form.
+	 * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
 	 * False by default.
 	 * 
-	 * @return true if form's <code>onsubmit()</code> should be called, false otherwise
+	 * @return true if <code>submit</code> should be triggered, false otherwise
 	 */
-	protected boolean shouldCallJavaScriptOnsubmit()
+	protected boolean shouldTriggerJavaScriptSubmitEvent()
 	{
 		return false;
 	}
@@ -178,12 +178,16 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior
 			attributes.setSubmittingComponentName(submittingComponentName);
 		}
 		
-		if (shouldCallJavaScriptOnsubmit()) {
+		if (shouldTriggerJavaScriptSubmitEvent()) {
 			attributes.getAjaxCallListeners().add(new AjaxCallListener() {
 				@Override
 				public CharSequence getPrecondition(Component component)
 				{
-					return String.format("return (Wicket.$('%s').onsubmit || jQuery.noop)();", form.getMarkupId());
+					return String.format("var p, f = jQuery('#%s'), fn = function(e) { p = !e.isDefaultPrevented(); e.preventDefault(); };" //
+						+ "f.on('submit',fn);" //
+						+ "f.trigger('submit');" //
+						+ "f.off('submit',fn);" //
+						+ "return p;", form.getMarkupId());
 				}
 			});
 		}
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
index fd59920..1f460ac 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java
@@ -137,9 +137,9 @@ public abstract class AjaxButton extends Button
 			}
 			
 			@Override
-			protected boolean shouldCallJavaScriptOnsubmit()
+			protected boolean shouldTriggerJavaScriptSubmitEvent()
 			{
-				return AjaxButton.this.shouldCallJavaScriptOnsubmit();
+				return AjaxButton.this.shouldTriggerJavaScriptSubmitEvent();
 			}
 
 			@Override
@@ -157,12 +157,13 @@ public abstract class AjaxButton extends Button
 	}
 
 	/**
-	 * Controls whether or not JS <code>onsubmit()</code> should be called on the submitting form.
+	 * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
 	 * False by default.
 	 * 
-	 * @return true if form's <code>onsubmit()</code> should be called, false otherwise
+	 * @return true if <code>submit</code> should be triggered, false otherwise
 	 */
-	protected boolean shouldCallJavaScriptOnsubmit() {
+	protected boolean shouldTriggerJavaScriptSubmitEvent()
+	{
 		return false;
 	}
 
diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
index eaed28f..62627ff 100644
--- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
+++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxFallbackButton.java
@@ -118,20 +118,21 @@ public abstract class AjaxFallbackButton extends Button
 			}
 			
 			@Override
-			protected boolean shouldCallJavaScriptOnsubmit()
+			protected boolean shouldTriggerJavaScriptSubmitEvent()
 			{
-				return AjaxFallbackButton.this.shouldCallJavaScriptOnsubmit();
+				return AjaxFallbackButton.this.shouldTriggerJavaScriptSubmitEvent();
 			}
 		};
 	}
 
 	/**
-	 * Controls whether or not JS <code>onsubmit()</code> should be called on the submitting form.
+	 * Controls whether or not a JS <code>submit</code> should be triggered on the submitting form.
 	 * False by default.
 	 * 
-	 * @return true if form's <code>onsubmit()</code> should be called, false otherwise
+	 * @return true if <code>submit</code> should be triggered, false otherwise
 	 */
-	protected boolean shouldCallJavaScriptOnsubmit() {
+	protected boolean shouldTriggerJavaScriptSubmitEvent()
+	{
 		return false;
 	}
 
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
index d33c9bd..c7f25fb 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/FileUploadPage.java
@@ -99,10 +99,10 @@ public class FileUploadPage extends BasePage
 			private static final long serialVersionUID = 1L;
 
 			/**
-			 * Need to call onsubmit to initiate progressbar. 
+			 * Need to trigger submit to initiate progressbar. 
 			 */
 			@Override
-			protected boolean shouldCallJavaScriptOnsubmit()
+			protected boolean shouldTriggerJavaScriptSubmitEvent()
 			{
 				return true;
 			}