在React函数中无法正确读取输入(没有JSX)

拉切尔

我这里的最终目标是做一些非常简单的电子邮件验证,并根据电子邮件的有效性使我的“下一步”按钮禁用或启用。我正在测试.isWorking()函数(控制传递给按钮的disable属性的布尔值),当我使用email.length> 0进行测试时,该函数似乎可以正常工作!但是,当我将其略微更改为email.length> 4时,该功能将不起作用,并且会自动返回“ true”,从而禁用该按钮。任何帮助都将不胜感激-我完全坚持这一点,我将非常感激!

const validEmailRegex = RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);

class Signup extends React.Component {

constructor() {
    super();
    this.state = {email: ""};
    this.handleSubmit = this.handleSubmit.bind(this);
}

isWorking (event) {
    //testing function here 
    const email = event.target;
    if (email.length > 4 ) {
        return false;
    }
    return true;

    //if (validEmailRegex.test(email) === true) {
    //   return false;
    //}
    //return true;
    }

handleSubmit(event) {
    event.preventDefault();

    if (!event.target.checkValidity()) {
       this.setState({ invalid: true, displayErrors: true, 
    });
       return;
    }

    const form = event.target;
    const data = new FormData(form);

    for (let name of data.keys()) {
       const input = form.elements[name];
       const parserName = input.dataset.parse;
       console.log('parser name is', parserName);
       if (parserName) {
          const parsedValue = inputParsers[parserName](data.get(name));
       data.set(name, parsedValue);
       }
     }

     this.setState({
        res: stringifyFormData(data), invalid: false, displayErrors: false, 
     });
 }

render() {
    const { res, invalid, displayErrors } = this.state;

    //pass boolean to the button for disabling or not 
    const isEnabled = this.isWorking(event);

    return (
        React.createElement("div", { className: "container" },
        React.createElement("div", { className: "row" },

            React.createElement("form", { onSubmit: this.handleSubmit, noValidate: true, className: displayErrors ? 'displayErrors' : '' },
            React.createElement("input", { className: "form-control", name: "formEmail", id: "formEmail", type: "email", placeholder: "email"}),),

            React.createElement("span", { className: "span"},
                 React.createElement("button", { className: "button1", disabled: isEnabled, type: "button"}, "next")
        ),));}}
瓦卡斯·穆姆塔兹
class Signup extends React.Component {

constructor() {
    super();
    this.state = {email: "", isEnabled: true};
    this.handleSubmit = this.handleSubmit.bind(this);
}

isWorking (event) {
    //testing function here 
    const email = event.target.value;
    console.log(email.length)
    if (email.length > 4 ) {
        this.setState({ isEnabled: false});
    } else {
      this.setState({ isEnabled: true});
    }
    }

handleSubmit(event) {
    event.preventDefault();

    if (!event.target.checkValidity()) {
       this.setState({ invalid: true, displayErrors: true, 
    });
       return;
    }

    const form = event.target;
    const data = new FormData(form);

    for (let name of data.keys()) {
       const input = form.elements[name];
       const parserName = input.dataset.parse;
       console.log('parser name is', parserName);
       if (parserName) {
          const parsedValue = inputParsers[parserName](data.get(name));
       data.set(name, parsedValue);
       }
     }

     this.setState({
        res: stringifyFormData(data), invalid: false, displayErrors: false, 
     });
 }

render() {
    const { res, invalid, displayErrors } = this.state;

    //pass boolean to the button for disabling or not 
   // const isEnabled = this.isWorking(event);

    return (
        React.createElement("div", { className: "container" },
        React.createElement("div", { className: "row" },

            React.createElement("form", { onSubmit: this.handleSubmit, onChange:(e)=>this.isWorking(e), noValidate: true, className: displayErrors ? 'displayErrors' : '' },
            React.createElement("input", { className: "form-control", name: "formEmail", id: "formEmail", type: "email", placeholder: "email"}),),

            React.createElement("span", { className: "span"},
                 React.createElement("button", { className: "button1", disabled: this.state.isEnabled, type: "button"}, "next")
        ),)));}}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

证明函数没有正确的输入验证

函数没有接收到正确的输入

在没有 !feof 的情况下限制在 C 中读取文档的正确方法,文档错误无法读取 .txt

有没有办法从 React 中的 createElement() 函数获取输入数据

没有自定义库的React中的Google地图:无法读取null的setState属性

没有正确读取数字?

在没有 JSX 的 React 中设置 elem id

函数在递归函数中没有正确返回?

停止在没有EOF的Java中读取输入

有没有办法将输入标签的 id 作为 onclick 函数参数传递,而无需在 JSX 中实际写入 id 值?

onClick 没有在 React 中正确触发函数

在React Native导航v2中使用mergeOptions函数之前,有没有办法读取选项?

字符数组无法正确读取输入

为什么scanf无法正确读取输入?

CMD无法正确读取输入字符

Hive MAP无法正确读取输入

无法在React中返回带有Geolocation坐标的JSX

我的函数中的++没有添加正确的数字

Swift 在递归函数中没有返回正确的值

Swift中没有输入参数的泛型函数?

函数无法正确读取状态值

COLNAMES函数无法读取正确的标签

从函数调用时无法读取输入

在文本框中没有文本就无法输入

从输入文件中读取,该输入文件的行末没有句号(和数字)

当没有输入输入时,如何从输入标签中触发一个函数?

wProps在React开发工具中更新,但条件jsx无法正确呈现

SCANF 可能没有读取正确的值

React:没有JSX的子组件