How to prevent page refreshing on firing form submission programmatically in ReactJS? I’ve tried this code:
JavaScript
x
17
17
1
const myForm = () =>
2
<form onBlur={(e) => {
3
if(!e.relatedTarget || (e.relatedTarget.form !== e.activeTarget))
4
5
e.currentTarget.submit((e) => {
6
e.preventDefault();// page reloads before this callback
7
debugger
8
});
9
}
10
}}
11
onSubmit={(e) => {
12
e.preventDefault();//// page reloads before this event
13
debugger
14
}}>
15
16
</form>
17
My goal is to submit form onBlur from this form (when a user fills all the fields and clicks outside of the form)
I’ve already checked these solutions but they dont work:
Prevent page reload when submit
I dont consider iframes Submit form without page reloading
Advertisement
Answer
You should use e.currentTarget.requestSubmit()
(docs). Read about differences with submit
method here.
Or you may simply define a submit handler function and provide it to both onBlur
and onSubmit
form properties.
JavaScript
1
14
14
1
const handleSubmit = (ev) => {
2
ev.preventDefault()
3
4
}
5
6
return (
7
<form
8
onBlur={(ev) => if (shouldSubmit(ev)) handleSubmit(ev)}
9
onSubmit={handleSubmit}
10
>
11
12
</form>
13
)
14
Without resorting to native form submission. If your use case allows that.