Nvm. I was being stupid. The code above works! :)))
Nvm. I was being stupid. The code above works! :)))
I updated my code to this. And i tested it case by case. Only mobile works, the email and invitation code dont work for some reason.
class Registration extends React.Component { constructor (props) { super (props); this.state = { selectedGender: null, errors: [], initComplete: false } this._handleSubmit = this._handleSubmit.bind(this); this._handleInputMobileOnChange = this._handleInputMobileOnChange.bind(this); this._handleInputEmailOnChange = this._handleInputEmailOnChange.bind(this); this._handleInputInvitationOnChange = this._handleInputInvitationOnChange.bind(this); this.clearError = this.clearError.bind(this); } clearError () { this.setState({ errors: [] }); } disable(){ let disable = true; if (this.state.inputMobile || this.state.inputEmail || this.state.inputInvitation) { //I tried && operator, still only mobile works disable = false; } return disable; } _handleInputMobileOnChange (e) { e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputMobile: e.target.value}) } _handleInputEmailOnChange(e){ e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputEmail: e.target.value}) } _handleInputInvitationOnChange(e){ e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputInvitation: e.target.value}) } change(e){ if("" != e.target.value){ this.button.disabled = false; } else{ this.button.disabled = true; } } render() { return ( <div className="container-fluid"> <form onSubmit={this._handleSubmit}> <div className="form-group has-danger"> <label htmlFor="input-MobileNum">number *</label> <input ref={(ref) => this.inputMobile = ref} type="tel" className={'form-control ' } id="input-MobileNum" onChange={this._handleInputMobileOnChange}} defaultValue=""/> </div> <div className="form-group has-danger"> <label htmlFor="input-Email">Email address *</label> <input ref={(ref) => this.inputEmail = ref} type="email" className={'form-control '} id="input-Email" defaultValue="" onChange={this._handleInputEmailOnChange}/> </div> <div className="form-group has-danger"> <label htmlFor="input-Invitation">Invitation code</label> <input ref={(ref) => this.inputInvitation = ref} type="text" className={'form-control '} id="input-Invitation" defaultValue="" onChange={this._handleInputInvitationOnChange}/> </div> <div className="form-group cta"> //NEXT BUTTON <button type="submit" className="btn btn-primary" disabled={this.disable()}>Next</button> </div> </form> </div> ) } I updated my code to this. And i tested it case by case. Only mobile works, the email and invitation code dont work for some reason.
class Registration extends React.Component { constructor (props) { super (props); this.state = { selectedGender: null, errors: [], initComplete: false } this._handleSubmit = this._handleSubmit.bind(this); this._handleInputMobileOnChange = this._handleInputMobileOnChange.bind(this); this._handleInputEmailOnChange = this._handleInputEmailOnChange.bind(this); this._handleInputInvitationOnChange = this._handleInputInvitationOnChange.bind(this); this.clearError = this.clearError.bind(this); } clearError () { this.setState({ errors: [] }); } disable(){ let disable = true; if (this.state.inputMobile || this.state.inputEmail || this.state.inputInvitation) { //I tried && operator, still only mobile works disable = false; } return disable; } _handleInputMobileOnChange (e) { e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputMobile: e.target.value}) } _handleInputEmailOnChange(e){ e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputEmail: e.target.value}) } _handleInputInvitationOnChange(e){ e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); this.setState({inputInvitation: e.target.value}) } change(e){ if("" != e.target.value){ this.button.disabled = false; } else{ this.button.disabled = true; } } render() { return ( <div className="container-fluid"> <form onSubmit={this._handleSubmit}> <div className="form-group has-danger"> <label htmlFor="input-MobileNum">number *</label> <input ref={(ref) => this.inputMobile = ref} type="tel" className={'form-control ' } id="input-MobileNum" onChange={this._handleInputMobileOnChange}} defaultValue=""/> </div> <div className="form-group has-danger"> <label htmlFor="input-Email">Email address *</label> <input ref={(ref) => this.inputEmail = ref} type="email" className={'form-control '} id="input-Email" defaultValue="" onChange={this._handleInputEmailOnChange}/> </div> <div className="form-group has-danger"> <label htmlFor="input-Invitation">Invitation code</label> <input ref={(ref) => this.inputInvitation = ref} type="text" className={'form-control '} id="input-Invitation" defaultValue="" onChange={this._handleInputInvitationOnChange}/> </div> <div className="form-group cta"> //NEXT BUTTON <button type="submit" className="btn btn-primary" disabled={this.disable()}>Next</button> </div> </form> </div> ) } Disable a button when the input fields are empty in reactjs
Im new to reactJS. Im wondering why my code below doesnt work. Everything works except disabling my NEXT button when text fields are empty. My expectation is that after i fill out ALL the textboxes, the NEXT button will be enabled.
class Registration extends React.Component { constructor (props) { super (props); this.state = { selectedGender: null, errors: [], initComplete: false } this._handleSubmit = this._handleSubmit.bind(this); this._handleInputMobileOnChange = this._handleInputMobileOnChange.bind(this); this.clearError = this.clearError.bind(this); } clearError () { this.setState({ errors: [] }); } _handleInputMobileOnChange (e) { e.preventDefault(); this.clearError(); e.target.value = utils.removeNonNumbers(e.target.value); //this.setState({value: e.target.value}) } change(e){ if("" != e.target.value){ this.button.disabled = false; } else{ this.button.disabled = true; } } render() { return ( <div className="container-fluid"> <form onSubmit={this._handleSubmit}> <div className="form-group has-danger"> <label htmlFor="input-MobileNum">number *</label> <input ref={(ref) => this.inputMobile = ref} type="tel" className={'form-control ' } id="input-MobileNum" onChange={()=>{ this._handleInputMobileOnChange; this.change.bind(this)}} defaultValue=""/> </div> <div className="form-group has-danger"> <label htmlFor="input-Email">Email address *</label> <input ref={(ref) => this.inputEmail = ref} type="email" className={'form-control '} id="input-Email" defaultValue="" onChange={()=>{ this.clearError; this.change.bind(this)}}/> </div> <div className="form-group has-danger"> <label htmlFor="input-Invitation">Invitation code</label> <input ref={(ref) => this.inputInvitation = ref} type="text" className={'form-control '} id="input-Invitation" defaultValue="" onChange={()=>{ this.clearError; this.change.bind(this)}}/> </div> <div className="form-group cta"> //NEXT BUTTON <button type="submit" className="btn btn-primary" ref={(button) => this.button=button}>Next</button> </div> </form> </div> ) } THANKS!!!
default