我有一个 redux-form 的电话号码字段。我希望这个字段是可选的(如果用户没有提交值,则默认为 ''),但如果他们输入了一个值,它应该检查以确保它是一个有效的电话号码。
我遇到的问题是我的表单的提交按钮当前被禁用,并且与我的 Redux 表单是否有效有关。我不确定如果它具有默认的 '' 值,为什么它不会通过有效。一旦在电话号码字段中输入了某些内容,它似乎确实会更改为 true 。
如果提交了某些内容,我如何检查验证,否则传递“”并且我的表单仍然有效?谢谢!
验证
const validate = (values) => {
const errors = {};
if (!/^[0-9-.() ]*$/i.test(values.phoneNumber)) {
errors.phoneNumber = 'Invalid phone number';
}
return errors;
};
表单域
<div className={classNames(['form-field', {
'error': phoneNumber.touched && phoneNumber.error,}])}
>
<label className="form-field-title">
Phone Number
{
phoneNumber.touched &&
phoneNumber.error &&
<span>{phoneNumber.error}</span>
}
</label>
<input
type="text"
className="form-input-field"
{...phoneNumber}
value={phoneNumber.value || ''}
/>
</div>
提交按钮
<button
type="submit"
className="btn dark"
disabled={!this.props.valid}
>
<span className="submit-text">
{this.state.submitText}
</span>
<i className="fa fa-check"/>
</button>