4

只有当用户按下按钮时,我才需要将 ErrorMessage 绑定到文本字段。在这有很好的例子如何使用errormessage但问题是我不知道如何在用户点击后附加errorMeesage

 <TextField id='titleField' value={titleValue} required={true} label={escape(this.props.description)} onGetErrorMessage={this._getErrorMessage} validateOnLoad={false} />

这是一个按钮的调用:

private _buttonOnClickHandler() {
    let textvalue = document.getElementById('titleField')["value"];

    if(textvalue === "")
    {
        //call onGetErrorMessage or something that will set ErrorMeesage and input will be red
    }

    return false;
}

谢谢

4

3 回答 3

3

我能想到的最简单的方法是通过onGetErrorMessage状态检查来预测是否已单击按钮。

<TextField
    id='titleField'
    value={titleValue}
    required={true}
    label={escape(this.props.description)}
    // Only allow showing error message, after determining that user has clicked the button
    onGetErrorMessage={this.state.buttonHasBeenClicked ? this._getErrorMessage : undefined}
    validateOnLoad={false}
/>

然后在您的按钮单击处理程序中,只需设置该状态值:

private _buttonOnClickHandler() {
    this.setState({ buttonHasBeenClicked: true });

    return false;
}

只要你实例化为buttonHasBeenClickedfalse,那么这个方法将满足以下要求:(a)用户点击按钮前,不显示错误信息TextField,(b)用户点击按钮后,错误信息开始出现被显示。您保留_getErrorMessage(value)根据TextField.

于 2019-02-18T08:45:39.103 回答
0

另一种方法是通过状态值处理所有验证。

控制定义是这样的

<TextField placeholder="Enter a venue location" required onChange={this._onVenueChange} {...this.state.errorData.isValidVenue ? null : { errorMessage: strings.RequiredFieldErrorMessage }}></TextField>

在 Onchange 事件中,您验证控件的值并设置错误状态值,如下所示,

private _onVenueChange = (event: React.FormEvent<HTMLTextAreaElement | HTMLInputElement>, newValue?: string): void => {

this.setState(prevState => ({
  errorData: {
    ...prevState.errorData,
    isValidVenue: newValue && newValue.length > 0,
    isValidForm: this.state.errorData.isValidForm && newValue && newValue.length > 0
  }
}));

this.setState(prevState => ({
  formData: {
    ...prevState.formData,
    venue: newValue
  }
}));
}

在上面的示例中,我在状态中使用了两个对象,一个用于捕获值,另一个用于捕获该字段是否错误。

希望这可以帮助..

干杯!!!

于 2019-12-03T02:08:14.803 回答
0

您需要根据用户输入设置显示/隐藏错误消息的状态,检查以下代码

import React, { Component } from 'react';

class App extends Component {
  state = {
    isErrorMessageHidden: true
  }
  clickHandler = () => {
    let textValue = document.getElementById('titleField').value;
    if(textValue === '')
      this.setState({isErrorMessageHidden: false});
    else
      this.setState({isErrorMessageHidden: true});    
  }
  render() {
    return (
      <div>
       <button onClick={this.clickHandler}>Check</button>
       <input type='text' id='titleField' />
       <p 
          style={{'color':'red'}}
          hidden={this.state.isErrorMessageHidden}
        >Please fill the form</p>
       </div>
    );
  }
}

export default App;

我希望这有帮助。

于 2019-02-16T13:36:17.843 回答