Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MultiEmailInput extends React.Component {
- constructor(props) {
- super(props)
- this.state = {
- emails:[]
- };
- }
- fieldChange(e){
- if (e.target.value !== ''){
- if (this.validateEmail(e.target.value)===true){
- this.setState({emails: this.state.emails.concat(e.target.value)});
- }
- }
- }
- fieldKeyDown(e){
- // console.log(e.target.value);
- if(e.target.value===''){
- var key = e.keyCode || e.charCode;
- if (key == 8 || key == 46) {
- this.setState({ emails: this.state.emails.splice(-1) });
- //logs correct updated value
- console.log(this.state.emails);
- }
- }
- }
- validateEmail(email) {
- 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,}))$/;
- return re.test(String(email).toLowerCase());
- }
- render() {
- //this value doesnt get updated?
- console.log(this.state.emails);
- return (
- <div className={"email-multi-input"+this.props.className}>
- <ul className="added-emails" ref="email-multi-input-added-emails">
- {
- this.state.emails.map((email, i) => {
- return (<li key={i}>{email}</li>)
- })}
- </ul>
- <input ref="email-multi-input-field" onChange={this.fieldChange.bind(this)} onKeyDown={this.fieldKeyDown.bind(this)} />
- </div>
- );
- }
- }
- React.render(
- <MultiEmailInput />,
- document.body
- );
Add Comment
Please, Sign In to add comment