首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >反应多个onChange事件...一个用于验证,另一个用于格式化输入

反应多个onChange事件...一个用于验证,另一个用于格式化输入
EN

Stack Overflow用户
提问于 2020-09-04 18:25:19
回答 1查看 102关注 0票数 0

我需要一个解决方案来格式化电话号码字段格式(123) 456-7890

目前使用通用的handleChange函数来处理所有输入的onChange事件和JOI进行验证。有没有人能帮个忙?

代码语言:javascript
运行
复制
import React from "react";

const Input = ({ name, label, error, ...rest }) => {
  return (
    <div className="form-group">
      <label htmlFor={name}>{label}</label>
      <input
        {...rest}
        name={name}
        id={name}
        className="form-control form-control-sm"
      />
      {error && <div className="fv-help-block">{error}</div>}
    </div>
  );
};

export default Input;

可重用组件

代码语言:javascript
运行
复制
renderInput(name, label, type = "text") {
    const { data, errors } = this.state;

    return (
      <Input
        type={type}
        name={name}
        value={data[name]}
        label={label}
        onChange={this.handleChange}
        error={errors[name]}
      />
    );
  }

带有名称和标签的输入字段

代码语言:javascript
运行
复制
{this.renderInlineInput("client.phoneNo","Phone #")}

可重用的onChange事件:

代码语言:javascript
运行
复制
handleChange = ({ currentTarget: input }) => {
    const errors = { ...this.state.errors };
    const errorMessage = this.validateProperty(input);
    if (errorMessage) errors[input.name] = errorMessage;
    else delete errors[input.name];

    const data = { ...this.state.data };
    data[input.name] = input.value;

    this.setState({ data, errors });
  };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-04 18:45:34

听起来您想要为您的号码创建一个掩码,使其具有您想要的格式。

我以前没有使用过这个库,但是您可以尝试使用https://imask.js.org/

他们给出的电话掩码示例如下

代码语言:javascript
运行
复制
var phoneMask = IMask(
  document.getElementById('phone-mask'), {
    mask: '+{7}(000)000-00-00'
  });

它看起来很容易使用,但你需要在一般的handleChange函数中以不同的方式处理你的电话输入。

或者您可能想为PhoneInputing制作另一个专门处理掩码的组件……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63739329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档