Guest User

Untitled

a guest
Jun 26th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.04 KB | None | 0 0
  1. import React, { Component } from 'react';
  2.  
  3. class FormTest extends Component {
  4. constructor(props) {
  5. super(props);
  6. this.state = {
  7. username: {
  8. value: '',
  9. valid: false,
  10. errorMessage: ''
  11. },
  12. password: {
  13. value: '',
  14. valid: false,
  15. errorMessage: ''
  16. },
  17. form: {
  18. valid: false
  19. }
  20. }
  21. }
  22.  
  23. onInputChange(event) {
  24. const targetName = event.target.name;
  25. const targetValue = event.target.value;
  26. const el = this.refs[targetName];
  27. this.setState({
  28. [targetName]: {
  29. value: targetValue,
  30. valid: el.validity.valid,
  31. errorMessage: el.validity.valueMissing ? `${targetName} is required` : el.validationMessage
  32. },
  33. form: {
  34. valid: this.form.checkValidity()
  35. }
  36. });
  37. }
  38.  
  39. onSubmit(event) {
  40.  
  41. }
  42.  
  43. returnErrorMessage(inputType) {
  44. let obj = this.state[inputType];
  45. return (
  46. <span>
  47. {!obj.valid && obj.errorMessage}
  48. </span>
  49. );
  50. }
  51.  
  52. render() {
  53. return (
  54. <div>
  55. <div>Form Test</div>
  56. <form onSubmit={this.onSubmit.bind(this)} ref={form => this.form = form}>
  57. <input ref='username' type="text" value={this.state.username.value} onChange={this.onInputChange.bind(this)} name='username' required/>
  58. {this.returnErrorMessage('username')}
  59. <br/><br/>
  60.  
  61. <input ref='password' type="password" value={this.state.password.value} onChange={this.onInputChange.bind(this)} name='password' required/>
  62. {this.returnErrorMessage('password')}
  63. <br/><br/>
  64. <button type="submit" disabled={!this.state.form.valid}>Submit</button>
  65. </form>
  66. </div>
  67. );
  68. }
  69. }
  70.  
  71. export default FormTest;
Add Comment
Please, Sign In to add comment