| English |
|---|
| When one is in a flow, there are times where one would like to simply validate the form data without actually completing the assignment. |
Save as Draft button, by default, will only save the form data without validation.
...
- To create a new button, open the form in the form builder.
- Create a new section at the bottom of the form.
- Edit the section's load binder, set it to Bean Shell Form Binder.
In the Bean Shell Form Binder, add in the following code.
Code Block language java import org.joget.apps.form.lib.SubmitButton; import org.joget.apps.form.lib.CustomHTML; import org.joget.apps.form.model.Column; import org.joget.apps.form.model.Element; import org.joget.apps.form.model.FormAction; import org.joget.apps.form.model.FormData; import org.joget.apps.form.model.Section; import org.joget.apps.form.service.FormUtil; import java.util.ArrayList; import java.util.Collection; Collection formActions = new ArrayList(); String saveButtonLabel = "Save As Draft with Validation"; Element saveButton = new SubmitButton(); saveButton.setProperty(FormUtil.PROPERTY_ID, "customSaveAsDraft"); saveButton.setProperty("label", saveButtonLabel); formActions.add(saveButton); Section section = element; ArrayList columns = (ArrayList) section.getChildren(); Column column = columns.get(0); column.setProperty("horizontal", "true"); column.setChildren(formActions); //add a custom html to fix the layout issue Element html = new CustomHTML(); String script = "<script>$(document).ready(function(){"; script += "$(\"#"+section.getPropertyString("id")+"\").find(\".form-cell\").prependTo(\"#section-actions .form-column\");"; script += "$(\"#"+section.getPropertyString("id")+"\").remove();"; script += "});</script>"; html.setProperty("id", "button_layout_fixes"); html.setProperty("label", ""); html.setProperty("value", script); formActions.add(html); return null;

