【发布时间】:2020-03-16 21:30:00
【问题描述】:
我正在尝试在 React 中实现结帐表单。该表格共有 4 个字段:姓名、CC 编号、CC 到期和 CVV。我正在使用一个库来验证不聚焦的每个字段。验证由 validationCallback 方法触发,该方法接受 3 个参数:字段、状态和消息。我想关闭每个输入的状态,并且每个状态只允许提交一次 === true。这是我的代码。
constructor(props) {
super(props);
this.state = {
nameOnCard: '',
errorMessage: '',
showLoaderForPayment: '',
collectJs: null,
token: null,
isPaymentRequestCalled: false,
showErrorModal: false,
paymentErrorText: '',
disabled: true,
};
}
我的状态中有一个禁用的属性,我最初将其设置为 true。
validationCallback: (field, status, message) => {
if (status) {
this.setState({ errorMessage: '' });
} else {
let fieldName = '';
switch (field) {
case 'ccnumber':
fieldName = 'Credit Card';
break;
case 'ccexp':
fieldName = 'Expire Date';
break;
case 'cvv':
fieldName = 'Security Code';
break;
default:
fieldName = 'A';
}
if (message === 'Field is empty') {
this.setState({ errorMessage: `${fieldName} ${message}` });
} else {
this.setState({ errorMessage: `${message}` });
}
}
},
在上述方法中,如果每个字段的状态===true,我想将 disabled 设置为 false... 下面是我设置为 this.state.disabled 值的按钮。
<button
className="continueBtn disabled"
disabled={this.state.disabled}
onClick={this.handleCardSubmit}
>
<span className="fa fa-lock" />
Pay $
{selectedPayment.amount}
</button>
我希望这些代码足以帮助解决问题。如果需要,我可以提供更多文件。
【问题讨论】:
标签: reactjs forms validation jsx