javascript - 我想在 onChange 中使用 2 个函数

标签 javascript reactjs onchange

import React, { Component } from "react"; import { Link } from   
    "react-router-dom";
        const emailRegx = /^(([^<>()\[\]\\.,;:\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,}))$/;
        export default class ChefInfo extends Component { constructor(props) { super(props);   this.state = {    eInput: "",  
    small: "" };

    - 

           ----------

           ---------
           }

         handleChange = e => {
           this.setState({
             eInput: e.target.value
           });
         };

         emailTest = () => {
           if (emailRegx.test(this.state.eInput) === false) {
             this.setState({
               small: "your email is inccorect"
             });
           } else {
             this.setState({
               small: ""
             });
           }
         };

         render() {
           return (
             <div className="big-parent">
               <form>
                 <div className="input">
                   <label>
                     <strong>E-mail</strong>
                   </label>
                   <input
                     type="email"
                     className="input-filed"
                     onChange={() => {    //here the problem
                       this.handleChange();
                       this.emailTest();
                     }}
                   />
                   <small className="small">{this.state.small}</small>
                 </div>
               </form>
               <a href="#" className="btn btn-dark button">
                 <strong>READY</strong>
               </a>
             </div>
           );
         }    }

最佳答案

您的handlechange使用事件对象参数。

所以你应该传递事件对象。

onChange={(e) => {    //here the problem
    this.handleChange(e);
    this.emailTest();
}}

但在这种情况下,您不需要使用两个函数。

这就够了。

handleChange = (e) => {
    this.setState({
        eInput : e.target.value,
        small : emailRegx.test(e.target.value) ? '' : "your email is incorrect"
    })
};

关于javascript - 我想在 onChange 中使用 2 个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695892/

相关文章:

javascript - 为什么 Promise 的 then & catch 回调都会被调用?

javascript - 如何使用 Angular 过滤器对元素进行分组?

reactjs - 如何使用本地 tinymce js 在 React 中加载 tinymce 编辑器

javascript - 当 javascript 以编程方式更改文本框值时调用服务器端方法

javascript - 如何在网络中托管 Ionic 应用程序?

javascript - 将附件添加到 Trello 卡片

javascript - 为 React App 开发一个 Redux store 作为一个单独的 NPM 模块

css - React Carousal 渲染黑色背景的透明图像

javascript - react - onChange 事件/setState

javascript - 更改动态创建的选择的 onchange 事件以填充另一个动态创建的选择