Guest User

Untitled

a guest
Aug 21st, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.61 KB | None | 0 0
  1. class MultiEmailInput extends React.Component {
  2. constructor(props) {
  3. super(props)
  4. this.state = {
  5. emails:[]
  6. };
  7. }
  8. fieldChange(e){
  9. if (e.target.value !== ''){
  10. if (this.validateEmail(e.target.value)===true){
  11. this.setState({emails: this.state.emails.concat(e.target.value)});
  12.  
  13. }
  14. }
  15. }
  16. fieldKeyDown(e){
  17. // console.log(e.target.value);
  18. if(e.target.value===''){
  19. var key = e.keyCode || e.charCode;
  20. if (key == 8 || key == 46) {
  21.  
  22. this.setState({ emails: this.state.emails.splice(-1) });
  23. //logs correct updated value
  24. console.log(this.state.emails);
  25.  
  26. }
  27. }
  28. }
  29. validateEmail(email) {
  30. var re = /^(([^<>()[]\.,;:s@"]+(.[^<>()[]\.,;:s@"]+)*)|(".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;
  31. return re.test(String(email).toLowerCase());
  32. }
  33. render() {
  34. //this value doesnt get updated?
  35. console.log(this.state.emails);
  36. return (
  37. <div className={"email-multi-input"+this.props.className}>
  38. <ul className="added-emails" ref="email-multi-input-added-emails">
  39.  
  40. {
  41.  
  42. this.state.emails.map((email, i) => {
  43. return (<li key={i}>{email}</li>)
  44. })}
  45. </ul>
  46.  
  47. <input ref="email-multi-input-field" onChange={this.fieldChange.bind(this)} onKeyDown={this.fieldKeyDown.bind(this)} />
  48. </div>
  49. );
  50. }
  51. }
  52.  
  53. React.render(
  54. <MultiEmailInput />,
  55. document.body
  56. );
Add Comment
Please, Sign In to add comment