I have a lightning component which has a form using lightning:recordEditForm
and when the user clicks submit I call an apex method which can return error message.
So if the method returns an error message – I don't want the submit to happen so I'm using event.preventDefault()
.
The problem is that when the method returns success – the submit doesn't happen (should update some fields).
How do I force-submit it ?
Or maybe I'm using the event.preventDefault() functionality wrong.
submit: function(component, event, helper) {
var record = component.get("v.record");
var recordFields = component.get("v.recordFields");
var isAttachmentRequired = component.get("v.isInputFileRequired");
var action = component.get("c.submitHandover");
action.setParams({
handover : recordFields,
isAttachmentRequired : isAttachmentRequired
});
action.setCallback(this, function(response) {
helper.hideSpinner(component);
var state = response.getState();
console.log("state: " + state);
if (state === "SUCCESS") {
var res = response.getReturnValue();
console.log("res: "+res)
if (res == "SUCCESS"){
component.find("submitForm").submit();
helper.showToast(component);
}
else{
component.set("v.isValidationError",true);
component.set("v.messageType","error");
component.set("v.message", res);
}
}
else {
console.log("state is not succeess");
var errors = response.getError();
if (errors) {
if (errors[0] && errors[0].message) {
console.log("Error message: " +
errors[0].message);
component.set("v.isValidationError",true);
component.set("v.messageType","error");
component.set("v.message", errors[0].message);
}
} else {
console.log("Unknown error");
component.set("v.isValidationError",true);
component.set("v.messageType","error");
component.set("v.message", "Unknown error");
}
}
});
event.preventDefault();
$A.enqueueAction(action);
helper.showSpinner(component);
}
Best Answer
I dug out an old demo implementation where I did something similar - I ended up using something like:
Where
theForm
is the aura:id of thelightning:recordEditForm