I want to submit a React form after a click on a link.
To do so I need to submit the form programmatically if the link is clicked.
my problem is : onSubmit
handler is not being fired after the form submit .
Here is a code snipped that I made for this purpose:
var MyForm = React.createClass({ handleSubmit: function(e){ console.log('Form submited'); e.preventDefault(); }, submitForm : function(e){ this.refs.formToSubmit.submit(); }, render: function() { return ( <form ref="formToSubmit" onSubmit={this.handleSubmit}> <input name='myInput'/> <a onClick={this.submitForm}>Validate</a> </form>); } }); ReactDOM.render( <MyForm name="World" />, document.getElementById('container') );
The handleSubmit
is not invoked and the default behavior is executed (the form being submitted). Is this a ReactJs bug or a normal behavior? Is there a way to get the onSubmit handler invoked ?
The onsubmit event is an event that occurs when you try to submit a form. You can put your form validation against this event type. The following example shows how to use onsubmit. Here we are calling a validate() function before submitting a form data to the web server.
The form can be submitted without using submit button by implementing a specific event attribute or by clicking the link. This task can be done by using the OnClick event attribute or by using the form. submit() method in Javascript.
The purpose of the HTML onsubmit attribute is to execute the code specified, when the associated form is submitted. HTML onsubmit attribute supports form element. Script.
I have success with this. This triggers the handleSubmit upon clicking. Hope this helps.
<form onSubmit={this.handleSubmit} ref={ (ref) => { this.form = ref; } } > <a onClick={ () => { this.form.dispatchEvent(new Event('submit')) } }> Validate </a> </form>
Found from here: https://github.com/facebook/react/issues/6796
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With