41

我正在尝试创建一个密码确认功能,该功能仅在用户离开确认字段后才呈现错误。我正在使用 Facebook 的 React JS。这是我的输入组件:

<input
    type="password"
    placeholder="Password (confirm)"
    valueLink={this.linkState('password2')}
    onBlur={this.renderPasswordConfirmError()}
 />

这是 renderPasswordConfirmError :

renderPasswordConfirmError: function() {
  if (this.state.password !== this.state.password2) {
    return (
      <div>
        <label className="error">Please enter the same password again.</label>
      </div>
    );
  }  
  return null;
},

当我运行该页面时,输入有冲突的密码时不会显示该消息。

4

1 回答 1

55

这里有几个问题。

1:onBlur 需要一个回调,并且您正在调用renderPasswordConfirmError并使用返回值,即 null。

2:你需要一个地方来呈现错误。

3:您需要一个标志来跟踪“并且我正在验证”,您将在模糊时将其设置为 true。如果需要,您可以将其设置为 false on focus,具体取决于您所需的行为。

handleBlur: function () {
  this.setState({validating: true});
},
render: function () {
  return <div>
    ...
    <input
        type="password"
        placeholder="Password (confirm)"
        valueLink={this.linkState('password2')}
        onBlur={this.handleBlur}
     />
    ...
    {this.renderPasswordConfirmError()}
  </div>
},
renderPasswordConfirmError: function() {
  if (this.state.validating && this.state.password !== this.state.password2) {
    return (
      <div>
        <label className="error">Please enter the same password again.</label>
      </div>
    );
  }  
  return null;
},
于 2014-07-21T21:19:11.333 回答