Помогло свойство объекта event - relatedTarget.
validateField(e){//функция-валидация relatedTarget: button.clear-field
if(e.relatedTarget.classList.contains("clear-field"))return;
this.hideHint(); //прячем окно с подсказкой
let value = this.state.value;//e.target.value;
if(value === ''){
this.props.fieldIsValid('email',null);
return;
}
let regExp = new RegExp('^[a-zA-Zа-яА-Я0-9-_\.@]{3,30}$');
if(!regExp.test(value)){ //проверка на соответствие регэкспу
this.setState({isValid:false});
this.props.fieldIsValid('email',false);
}
else{
this.setState({isValid:true});
this.props.fieldIsValid('email',value);
}
this.checkAvailability();
}
render() {
return (
<div className="form-group">
<label>
{animateDynamicLabel(this.state.value, 'E-mail')}
<input
onChange={this.setValue.bind(this)}
onFocus={this.setHint.bind(this)}
onBlur={this.validateField.bind(this)}
value={this.state.value}
className={"form-control " + ( (this.state.isValid === false) ? 'hasErrors' : '') }
type="text"
placeholder="Адрес E-mail"
/>
<ClearField render={this.state.value && this.state.focus} clearField={this.clearField.bind(this)}/>
{this.showError()}
</label>
</div>
)
}
}
export default EmailInput;