Skip to main content
AI Assist is now on Stack Overflow. Start a chat to get instant answers from across the network. Sign up to save and share your chats.
added 57 characters in body
Source Link

Nvm. I was being stupid. The code above works! :)))

Nvm. I was being stupid. The code above works! :)))

added 2979 characters in body
Source Link

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> ) } 
Source Link

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!!!