问题
On submission of a form, I'm trying to doSomething()
instead of the default post behaviour.
Apparently in React, onSubmit is a supported event for forms. However, when I try the following code:
var OnSubmitTest = React.createClass({
render: function() {
doSomething = function(){
alert('it works!');
}
return <form onSubmit={doSomething}>
<button>Click me</button>
</form>;
}
});
The method doSomething()
is run, but thereafter, the default post behaviour is still carried out.
You can test this in my jsfiddle.
My question: How do I prevent the default post behaviour?
回答1:
In your doSomething()
function, pass in the event e
and use e.preventDefault()
.
doSomething = function (e) {
alert('it works!');
e.preventDefault();
}
回答2:
I'd also suggest moving the event handler outside render.
var OnSubmitTest = React.createClass({
submit: function(e){
e.preventDefault();
alert('it works!');
}
render: function() {
return (
<form onSubmit={this.submit}>
<button>Click me</button>
</form>
);
}
});
回答3:
<form onSubmit={(e) => {this.doSomething(); e.preventDefault();}}></form>
it work fine for me
回答4:
You can pass the event as argument to the function and then prevent the default behaviour.
var OnSubmitTest = React.createClass({
render: function() {
doSomething = function(event){
event.preventDefault();
alert('it works!');
}
return <form onSubmit={this.doSomething}>
<button>Click me</button>
</form>;
}
});
来源:https://stackoverflow.com/questions/28479239/setting-onsubmit-in-react-js