Ich habe ein aus wie folgt aus:Widersprüchliche Veranstaltungen: onKeyPress & onClick
Mit dem folgenden Code:
<form onKeyPress={this.login.bind(this)}>
<input type="text" placeholder="username"/>
<input type="password" placeholder="password"/>
<button type="button" onClick={this.login.bind(this)}>Log In</button>
</form>
Während ich habe die login()
Methode wie unten:
login(e){
if((e.type==='keypress' && e.which===13) || e.type==='click'){
//Do login operations:
this.props.store.login()//the method inside MobX store
}
}
In folgenden Szenarien gibt es keine Fehler und ich kann l ogin:
- ich auf der mit Maus
login
Schaltfläche klicken - I Enter drücken, während der Login-Button konzentriert NICHT ist
Aber die folgende dritte Szenario gibt mir Fehler aufgrund der Login Operationen werden zweimal aufgerufen:
- Wenn ich drücke Geben Sie während der Login-Taste IS focu sed
(zB Login-Button drücken Registerkarte Taste fokussiert ist) Ich frage mich, was die beste Praxis ist, durch die ich die Fehler der dritten Szenario zu vermeiden. Ich habe andere verwandte SO-Fragen durchgesehen, aber ich konnte die beste Vorgehensweise nicht herausfinden.
Ich habe vergessen zu erwähnen, dass ich ReactJS mit MobX verwende.
Bitte t ag die Frage mit dem Rahmen, den Sie verwenden. Die Art, mit submit on click und on enter umzugehen, besteht darin, NUR die Submit zu binden und eine Submit-Schaltfläche zu haben. – mplungjan
@mplungjan Danke, ich habe ReactJS und MobX Tags hinzugefügt – user3405291
http://stackoverflow.com/questions/38262148/react-handle-form -submit – mplungjan