【问题标题】:Whitespace validation in reactjsreactjs中的空格验证
【发布时间】:2020-09-25 09:35:50
【问题描述】:

我希望用户在单击提交按钮时阻止添加空格。我在句柄更改中显示警报消息,因此如果用户添加空格,它将显示。

但我想在句柄提交中显示警报消息。

下面是我的代码:

 handleChange(event) {
    let reWhiteSpace = new RegExp(/\s/);
    var errors = {}
     if (event.target.id === 'userID') {
        this.setState({ userID: event.target.value })
        errors.userID = reWhiteSpace.test(event.target.value)
        if (errors.userID) {
            this.setState({
                alertMessage: "Spacing Not Allowed",
                showAlert: true,
                alertcolor: "warning"
            })
        } 
    }

    this.setState({
        errors: errors
    })
}

 handleSubmit(event) {
    event.preventDefault();
    console.log('form submission data', this.state);
    var data = this.state;
    if (this.state.userID !== '' ) {
        const requestOptions = {
            method: 'POST',
            headers: new Headers({
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*'
            }),
            body: JSON.stringify(data)
        };
        console.log(requestOptions)
        fetch(API_URL, requestOptions)
            .then(res => res.json())
            .then((data) => {
                console.log(data)
                if (data.status) {
                    window.location = '/user-list'
                    if (data.message !== "") {
                        this.setState({
                            alertMessage: data.message,
                            showAlert: true,
                            alertcolor: "success"
                        })
                    }
                }
                else if (data.message !== "") {
                    console.log('else', data.message)
                    this.setState({
                        alertMessage: data.message,
                        showAlert: true,
                        alertcolor: "warning"
                    })
                }
            })
            .catch(console.log)
    }
    else {
        this.setState({
            alertMessage: "Please enter all required fields",
            showAlert: true,
            alertcolor: "warning"
        })
    }
}

我想检查句柄提交中的空白验证 有什么建议吗?

【问题讨论】:

  • 为什么不使用this.state.errors.userIDhandleSubmit 中检查这个?

标签: reactjs


【解决方案1】:

由于您将errors存储在状态中,因此您也可以在handleSubmit中检查它:

handleSubmit(event) {
    event.preventDefault();
    if (this.state.errors && this.state.errors.userID) {
        this.setState({
            alertMessage: "Please enter all required fields",
            showAlert: true,
            alertcolor: "warning"
        })
        return;
    }

    console.log('form submission data', this.state);
    var data = this.state;
    if (this.state.userID !== '' ) {
        const requestOptions = {
            method: 'POST',
            headers: new Headers({
                'Content-Type': 'application/json',
                'Access-Control-Allow-Origin': '*'
            }),
            body: JSON.stringify(data)
        };
        console.log(requestOptions)
        fetch(API_URL, requestOptions)
            .then(res => res.json())
            .then((data) => {
                console.log(data)
                if (data.status) {
                    window.location = '/user-list'
                    if (data.message !== "") {
                        this.setState({
                            alertMessage: data.message,
                            showAlert: true,
                            alertcolor: "success"
                        })
                    }
                }
                else if (data.message !== "") {
                    console.log('else', data.message)
                    this.setState({
                        alertMessage: data.message,
                        showAlert: true,
                        alertcolor: "warning"
                    })
                }
            })
            .catch(console.log)
    }
    else {
        this.setState({
            alertMessage: "Please enter all required fields",
            showAlert: true,
            alertcolor: "warning"
        })
    }
}

如果您只想在字符串的开头/结尾检查空格,您可以使用trim() 方法而不是您的正则表达式:

function checkWhiteSpace(text) {
  const _text = text.trim();
  return text === _text;
}

您还可以避免所有这些空白验证,并在使用string.trim() 方法发送您的请求之前以编程方式将其删除。你可以read more here

【讨论】:

  • 只允许添加 2 个单词。单字不接受
  • 你这是什么意思?你的正则表达式不起作用?我添加了另一张支票
猜你喜欢
  • 1970-01-01
  • 2021-12-18
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
  • 1970-01-01
  • 2015-09-05
  • 2021-09-17
相关资源
最近更新 更多